class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
#在查找过程中,找出不含重复字符的最长子串长度,要求连续
#首先定义四个变量,分别为左边界,(整个字符串的长度)右边界,当前无重复最长子串长度以及遍历完整个字符串的最长无重复子串长度
left,length,cur_len,max_len =0,len(s),0,0
#定义一个集合,用于存放不重复的子串
together = set()
#遍历字符串s
for i in range(length):
#记录滑动窗口的大小
cur_len+=1
#查询遍历元素是否在集合中
while s[i] in together:
#如果当前左指针指向元素在集合中,说明重复,则从集合中一个个移除元素,直到当前左指针指向的字符不在集合中停止循环
together.remove(s[left])
left += 1
cur_len -= 1
#取滑动窗口的最大值
if cur_len >max_len:
max_len = cur_len
#如果左指针指向的元素不在集合中,则将该元素加入集合,(前面滑动窗口默认加1)
together.add(s[i])
return max_len