class Solution:
def get_length_by_longest_substring(self, s:str)-> int:
res, tmp = 0, 0
dic = {}
# res: 存储最长长度
# tmp: 当前窗口的长度
# j: 当前遍历的字符的位置
# i: 当前遍历的字符的上个位置, 默认没出现过就是-1
# dic: 维护每个字符的最后出现的位置
for j in range(len(s)):
i = dic.get(s[j], -1)
dic[s[j]] = j
if tmp < j - i:
tmp += 1
else:
tmp = j - i
res = max(res, tmp)
return res
s = "abcabcdbb"
res = Solution().get_length_by_longest_substring(s)
print(res) # 4
时间复杂度:O(n)
空间复杂度:O(1)