# 3 Longest Substring Without Repeating Characters

Given a string `s`, find the length of the longest substring without repeating characters.

Example 1:

``````Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.
``````

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.
``````

Example 4:

``````Input: s = ""
Output: 0
``````

Constraints:

• `0 <= s.length <= 5 * 104`
• `s` consists of English letters, digits, symbols and spaces.
 `````` 1 2 3 4 5 6 7 8 9 10 11 `````` ``````class Solution: def lengthOfLongestSubstring(self, s: str) -> int: longest = 0 d = {} start = 0 for i, c in enumerate(s): if c in d and d[c] >= start: start = d[c] + 1 d[c] = i longest = max(longest, i - start + 1) return longest``````
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 `````` ``````func lengthOfLongestSubstring(s string) int { ans := 0 m := make(map[byte]int) // "last occurred" map i := 0 for j, v := range []byte(s) { if v, ok := m[v]; ok && v > i { i = v } // e.g. // "a": i=0, j=0, len is 0-0+1=1 // "ab": i=0, j=1, len is 1-0+1=2 // "aba": i=1, j=2, len is 2-1+1=2 if j - i + 1 > ans { ans = j - i + 1 } m[v] = j + 1 } return ans }``````