leetcode3.无重复字符的最长子串
滑动窗口 双指针
基本思路
遍历字符串,没遇到过的字符,快指针继续+1,遇到过的字符,慢指针+1并且重置对应元素出现标识为false,如果对应的字符与快指针相同,则慢指针+1。当然别忘了更新长度。
解法代码
func lengthOfLongestSubstring(s string) int {
lens := len(s)
if lens < 2 {
return lens
}
window := make([]bool, 128)
l, r, leghth := 0, 0, math.MinInt
for r < lens {
c := s[r]
if window[c] == false {
window[c] = true
} else {
for l <= r {
if s[l] == s[r] {
if l < r {
l++
}
break
}
d := s[l]
l++
window[d] = false
}
}
if r-l+1 > leghth {
leghth = r - l + 1
}
r++
}
if leghth == math.MinInt {
return 0
}
return leghth
}
Last updated