# 3. 无重复字符的最长子串
# 中等
# 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。
### 用两个指针分别代表左右下标,表示当前考虑的字串;用一个dict来记录每个字符最后一次出现的下标。
### 当子串中出现重复字符时,就更新left等于旧的下标+1
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if len(s) < 2:
return len(s)
left = 0
res = 0
d = dict()
for right in range(len(s)):
if s[right] in d and d[s[right]] >= left:
left = d[s[right]] + 1
d[s[right]] = right
res = max(res, right - left + 1)
return res