滑动窗口+哈希表
哈希表 seen 统计: 指针 j遍历字符 s,哈希表统计字符 s[j]最后一次出现的索引 。
更新左指针 i : 根据上轮左指针 i 和 seen[s[j]],每轮更新左边界 i ,保证区间 [i+1,j] 内无重复字符且最大。
更新结果 res : 取上轮 res和本轮双指针区间 [i+1,j] 的宽度(即 j−i )中的最大值。
class Solution:def lengthOfLongestSubstring(self, s: str) -> int:seen=dict()#存值res=0i=-1for j in range(len(s)):if s[j] in seen:#更新左指针i=max(seen[s[j]],i)#哈希表记录seen[s[j]]=jres=max(res,j-i)return res