Longest Substring Without Repeating Characters
Find the length of the longest substring without repeating characters.
Examples
The answer is "abc", with the length of 3.
The answer is "b", with the length of 1.
The answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.
Problem Understanding
We need to find the length of the longest substring in a given string s that contains no duplicate characters.
A substring is a contiguous sequence of characters. For example, in "abcabcbb", "abc" is a substring, but "acb" is not (it skips characters).
Algorithm Strategy
We use the Sliding Window technique with a Hash Map (or Array for fixed charsets) to track characters in the current window.
- Initialize
left = 0andmax_len = 0. - Use a
mapto store the most recent index of each character. - Iterate
rightfrom 0 to end of string:- If
s[right]is inmapand its index is>= left, it means we found a repeat inside our current window. Movelefttomap[s[right]] + 1to skip the previous occurrence. - Update
map[s[right]]to the currentrightindex. - Update
max_len = max(max_len, right - left + 1).
- If
- Return
max_len.
Key Insight: Instead of shrinking the window one by one, we can jump the left pointer directly past the duplicate character for O(N) efficiency.
Interactive Visualization
Initializing...
See the Logic in Motion
Stop memorizing code. Unlock the full interactive visualizer to master the logic step-by-step.- Problem Understanding
- Algorithm Strategy
- Interactive Visualization
- Dry Run: s = "dvdf"
- Edge Cases & Common Mistakes
- Solution
- Complexity Analysis
Stop Guessing, Start Mastering.
Build the FAANG intuition. Master this pattern with optimized implementations, visual dry runs, and our curated collection of high-yield problems.
