class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
if len(s) <= 1:
return len(s)
# 用字典记录上次出现该字符的位置
dit = {}
dit[s[0]] = 0
res = 1 # 初始结果设置为1
ans = 0
for i in range(1, len(s)):
# 两种情况:若当前字符之前没有出现过,则结果直接+1
if s[i] not in dit:
res += 1
dit[s[i]] = i
# 若当前字符出现过,把上个位置+1的结果和当前字符距最近上个字符的距离比较,取最小值
else:
res = min(res+1, i-dit[s[i]])
dit[s[i]] = i
# 记录最终结果,取最大值
ans = max(res, ans)
return ans
python3实现最长无重复子串