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

Example 1:

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

Example 2:

  1. Input: s = "bbbbb"
  2. Output: 1
  3. Explanation: The answer is "b", with the length of 1.

Example 3:

  1. Input: s = "pwwkew"
  2. Output: 3
  3. Explanation: The answer is "wke", with the length of 3.
  4. 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.

Solution

思路是HashMap和滑动窗口

  1. 右指针遍历string对应的char array
    1. 同时用一个hashmap,<字符,对应出现的次数>
  2. 如果一个字符出现次数==2
    1. 挪动左指针,知道这个字符的出现次数回归到1
  3. 每次移动右指针,都更新结果长度