给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
func lengthOfLongestSubstring(s string) int {
var Hash map[rune]int
Hash = make(map[rune]int)
var max int = 0
var length int = 0
for k, v := range s {
length++
if i, ok := Hash[v]; ok{
if k - i < length{ //!重要的判断
length = k - i
}
}
Hash[v] = k
if max < length{
max = length
}
}
return max
}
记录上一次字母出现的位置,并进行比较。
考虑字符串只有大小写的情况下,可以将哈希表替换为长度为26*2的数组,减少空间复杂度。