双指针
class Solution:
def lengthOfLongestSubstring(self , s: str) -> int:
dic = {} #建立一个字典,用来对付重复元素
i = -1 #左指针i,设成负一,如果后面一开始就是最长不重复子字符串的开始的话,直接减i就能求出长度
res = 0
for j in range(len(s)):
if s[j] in dic:
i = max(dic[s[j]],i) # 如果碰到重复了,就要更新左指针i,这里需要比大小是因为可能重复字符可能在i前面,这种情况i是不需要动的
dic[s[j]] = j #右指针j不断更新
res = max(res,j-i)
return res