无重复字符的最长字串
给定一个字符串 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
}

安克创新 Anker公司福利 664人发布