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

Example 1:

Input: 3 
Explanation: The answer is "abc", with the length of 3. 

Example 2:

Input: 1
, with the length of 1.

Example 3:

Input: 3
, with the length of 3. 
Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

求最长不含重复字符字串,双指针,求最大两相同字符的距离即可。时间复杂度O(n),空间复杂度O(n)。题目没说一定全是字母所以不能使用256长度数组替代map,如果可以时间复杂度是O(1)。
class Solution {
    public int lengthOfLongestSubstring(String s) {
        if (s == null || s.length() <= 0)
            return 0;
        Map<Character, Integer> map = new HashMap<>();
        int ret = 0;
        for (int i=0,j=0; i<s.length(); i++) {
            char ch = s.charAt(i);
            if (map.containsKey(ch)) {
                j = Math.max(j, map.get(ch) + 1);
            }
            ret = Math.max(ret, i-j+1);
            map.put(ch, i);
        }
        return ret;
    }
}

 

相关文章:

  • 2022-01-10
  • 2021-05-17
  • 2022-02-05
  • 2021-12-25
  • 2021-10-31
  • 2021-07-25
猜你喜欢
  • 2021-09-05
  • 2021-11-10
  • 2021-10-03
  • 2021-06-04
  • 2021-12-23
  • 2021-09-14
  • 2021-11-20
相关资源
相似解决方案