Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.
Example 3:
Input: "pwwkew"
Output: 3
Explanation: 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.
Idea
- Creat a dictionary
window = {char : pos}to record the position of the occurrance ofchar. - For character
cins:- If
cnot inwindow:window[c] = i - Else:
-
Update all characters from
lefttowindow[c]to-1 -
Update
ans -
Make
left = window[c] + 1 -
window[c] = i
-
- If