--- title: '3. Longest Substring Without Repeating Characters' description: Given a string s, find the length of the longest substring without duplicate characters sidebar: label: 'Longest Substring Without Repeating Characters' badge: 'Medium' --- Sliding Window ### Example 1: - Input: `s = "abcabcbb"` - Output: `3` - Explanation: The answer is "abc", with the length of `3`. Note that "bca" and "cab" are also correct answers. ### Example 2: - Input: `s = "bbbbb"` - Output: `1` - Explanation: The answer is "b", with the length of `1`. ### Example 3: - Input: `s = "pwwkew"` - Output: `3` - Explanation: The answer is "wke", with the length of `3`. Notice that the answer must be a substring, "pwke" is a subsequence and not a substring. ### Constraints: - `0 <= s.length <= 10^5` - `s` consists of English letters, digits, symbols and spaces. ## Solution ```py class Solution: def lengthOfLongestSubstring(self, s: str) -> int: left = 0 ans = 0 seen = set() for right, c in enumerate(s): while c in seen: seen.remove(s[left]) left += 1 seen.add(c) ans = max(ans, right - left + 1) return ans ```