代码思路:j 表示子串终止位置,i表示字串起始位置 当未出现重复时,字符串的长度即为字符串的结束位置减去起始位置。发生重复时,重新利用字符串的结束位置j减去新的起始位置i,并与之前的未重复字串的长度作比较取较大者
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
s1 = {}
i, res = 0, 0
for j in range(len(s)):
if s[j] in s1:
i = max(s1[s[j]], i)
res = max(res, j - i + 1)
s1[s[j]] = j + 1
return res;