根据题意可采用双指针的解法(滑动窗口),用 dict 做字符计数器, 遍历字符,当字符不在 dict 中时, 右移右指针,否则, 右移左指针并判断 dict 的值是否改变,直至结束 代码如下:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return int整型
#
from collections import defaultdict
class Solution:
def lengthOfLongestSubstring(self , s: str) -> int:
# write code here
count = defaultdict(int)
l, r, n = 0, 0, len(s)
max_l = 0
while l < n:
while r < n and s[r] not in count:
count[s[r]] += 1
r += 1
if r - l > max_l:
max_l = r - l
count[s[l]] -= 1
if count[s[l]] == 0:
del count[s[l]]
l += 1
return max_l
双指针(滑动窗口)写法:
l, r, n = 0, 0, len
while l < n:
whle r < n and [阈值条件变化]
[阈值条件变化]
r += 1
[左右指针长度计算]
[阈值条件变化]
l += 1