mq027.无重复字符的最长子串

 

题目链接

啊这个之前做过了的,却还是花了一个小时才调试出来??好啊,我是废物。具体思路见jz048吧太长了懒得打了。这个算法的时间复杂度是O(N),空间复杂度是O(1)。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        pos = dict()
        ans, cur = 0, 0
        for i in range(len(s)):
            if s[i] in pos and cur >= i - pos[s[i]]:
                cur = i - pos[s[i]]
            else:
                cur += 1
            pos[s[i]] = i
            ans = max(ans, cur)
        return ans