Longest Substring Without Repeating Characters

Problem page:https://leetcode.com/problems/longest-substring-without-repeating-characters

Solution

def lengthOfLongestSubstring(self, s: str) -> int:
        n, res, left = len(s), 0, 0
        filter_set = set()
        for r in range(n):
            if s[r] not in filter_set:
                filter_set.add(s[r])
                res = max(res, r - left + 1)
            else:
                while s[r] in filter_set:
                    filter_set.remove(s[left])
                    left += 1
                filter_set.add(s[r])
        return res

Complexity

  • time: O(n)
  • space: O(min(m, n)) m is the length of substring