zoukankan      html  css  js  c++  java
  • LeetCode

    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.

    求最长不含重复字符字串,双指针,求最大两相同字符的距离即可。时间复杂度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;
        }
    }
  • 相关阅读:
    Windows下使用nmake编译C/C++的makefile
    poj 1228
    poj 1039
    poj 1410
    poj 3304
    poj 1113
    poj 2074
    uva 1423 LA 4255
    poj 1584
    poj 3277
  • 原文地址:https://www.cnblogs.com/wxisme/p/9641277.html
Copyright © 2011-2022 走看看