无重复字符的最长字串
给定一个字符串 s
,请你找出其中不含有重复字符的 最长连续子字符串 的长度。
面试常考算法题,很经典
考察双指针+哈希,指针移动法
package main import ( "fmt" ) func main() { fmt.Println(lengthOfLongestSubstring("pwwkew")) } func lengthOfLongestSubstring(s string) int { // 滑动窗口-双指针+哈希,要注意第二个for循环,和map1[s[l]]--,是l左 if len(s) <= 1 { return len(s) } l, r := 0, 1 sMax := 0 map1 := make(map[byte]int, 0) map1[s[0]]++ for r < len(s) { map1[s[r]]++ for r < len(s) && map1[s[r]] > 1 { map1[s[l]]-- l++ } sMax = max(r-l+1, sMax) r++ } fmt.Println(map1) return sMax } func max(a, b int) int { if a > b { return a } return b }