class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
myHashMap = {} # 使用defaultdict代替unordered_map,它自动处理键不存在的情况
start, end = 0, 0
ans = 0
while end < len(s):
if s[end] not in myHashMap: # 使用in关键字检查字符是否在哈希映射中
myHashMap[s[end]] = end # 如果不在,将字符和索引添加到映射中
ans = max(ans, end - start + 1) # 更新最长子串长度
end += 1 # 右边界向后移动
else:
temp = start # 保存旧的start值
start = myHashMap[s[end]] + 1 # 更新start到重复字符的下一个位置
if start < temp:
start = temp # 如果新的start更小,保持不变
del myHashMap[s[end]] # 从哈希映射中删除重复字符
return ans
ont = Solution()
s = "dvdf"
print(ont.lengthOfLongestSubstring(s))