3. Longest Substring Without Repeating Characters

Medium

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.

Constraints:

  • 0 <= s.length <= 5 * 104

  • s consists of English letters, digits, symbols and spaces.

解題

func lengthOfLongestSubstring(s string) int {
	ans := 0
	start := 0
	m := make(map[byte]int)

	for index := 0; index < len(s); index++ {
		if val, ok := m[s[index]]; ok { 
			if start < val+1 {
				start = val + 1
			}
		}
		if index-start+1 > ans {
			ans = index - start + 1
		}

		m[s[index]] = index
	}

	return ans
}

Last updated