package main
import "fmt"
/**
给定一个字符串,请找出其中不含有重复字符的最长子串
eg: 输入: "abcacabb"
输出: "abc"
*/
func getLongestString(ss string) string {
storeMap := make(map[int]string) // key为保存的字符转最后一个字符在整个字符串中的index,val为字符串
temp := ss[:1] // 存储正在比较的字符串,初始化为字符串的第一个字符
// 从字符串的第二个字符开始遍历字符串
for i := 1; i < len(ss); i ++ {
index := findChar(temp,ss[i])
if index == -1 {
// 说明没有找到相同的,则在temp后面追加此char
temp = temp + string(ss[i])
} else {
// 找到相同的char则截断temp为两部分,相同char之前的部分保存进map,之后的部分作为新的temp
storeMap[i-1] = temp[:index + 1]
temp = temp[index + 1 :] + string(ss[i])
}
}
// 遍历storeMap找到长度最长的string
maxLenStr := ""
for _, val := range storeMap {
if len(val) > len(maxLenStr) {
maxLenStr = val
}
}
return maxLenStr
}
// findChar返回相同的char的index,如果不存在相同的char则返回-1
func findChar(s string, char
给定一个字符串,请找出其中不含有重复字符的最长子串
最新推荐文章于 2022-02-24 18:38:35 发布