【不定长滑动窗口】【灵神题单】【刷题笔记】
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
# 设左右指针,移动右指针统计字符出现次数
# 如果有重复出现的,就移动左指针 知道没有重复,更新res
ans = 0
left = 0
for right, c in enumerate(s):
if c in s[left : right]:
left += s[left:right].find(c) + 1
else:
ans = max(ans, right - left + 1)
return ans
这里的find是第一次看到,是字符串自带的,太好用了也…
也可以用while代替find的功能!
用一个假left一直跟着right跑,直到某次
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
ans = 0
left = 0
for right, c in enumerate(s):
# 用while循环替代find方法来检查是否有重复字符并移动左指针
temp_left = left
while temp_left < right and s[temp_left]!= c:
temp_left += 1
if temp_left < right:
left = temp_left + 1
else:
ans = max(ans, right - left + 1)
return ans