leetcode 3. 无重复字符的最长子串

滑动窗口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
s_len = len(s)
ans = 0
start = 0
end = 0
visited_char_set = set()
for start in range(s_len):
end = max(end, start)
visited_char_set.add(s[start])

while end + 1 < s_len and s[end + 1] not in visited_char_set:
visited_char_set.add(s[end + 1])
end += 1
ans = max(ans, end - start + 1)

visited_char_set.remove(s[start])
return ans