求字符串中的最长子串长度
使用go语言实现求字符串中的最长子串长度
package main
import (
"fmt"
)
//求字符串中的最长子串长度
func maxlensub(str string) (maxLen int) {
if len(str) == 0 {
return
}
//记录元素的最后出现位置
itemLastIndex := make(map[rune]int)
start := 0
maxLen = 0
for index, item := range []rune(str) {
if lastIndex, ok := itemLastIndex[item]; ok && lastIndex >= start {
start = lastIndex + 1 //获取元素上一次出现的位置
}
//本次出现位置-上次出现位置
if index-start+1 > maxLen {
maxLen = index - start + 1
}
itemLastIndex[item] = index
}
fmt.Printf("%s %d", str, maxLen)
fmt.Println()
return maxLen
}
func main() {
fmt.Println("求最长子串长度示例演示")
maxlensub("abcdefg")
maxlensub("ababab")
}