3.无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。
题解
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
max_len = 0
sub_s_set = set()
left = 0
right = 0
length = len(s)
while right < length:
if s[right] not in sub_s_set:
sub_s_set.add(s[right])
right += 1
else:
max_len = max_len if right - left < max_len else right - left
sub_s_set.remove(s[left])
left += 1
max_len = max_len if right - left < max_len else right - left
return max_len
思路
使用两个指针标识当前步骤的最长子串,分别叫做left和right。left表示子串的左边界,right表示子串的右边界。左右两个指针中的字符串是不重复的,每次循环移动一个指针:当右指针指向的字符不在*s[left: right]*中时,右指针向右一步,反之左指针向右一步。