美文网首页
3. Longest Substring Without Rep

3. Longest Substring Without Rep

作者: liuhaohaohao | 来源:发表于2018-06-22 10:02 被阅读0次

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

    Examples:

    Given "abcabcbb", the answer is "abc", which the length is 3.

    Given "bbbbb", the answer is "b", with the length of 1.

    Given "pwwkew", 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.

    Solution:
    基本想法:维护一个hashmap,其中字符为key,位置为value,同时维护两个指针用于计算最长子串。右指针扫描,同时更新hashmap。如果某个字符已经在hashmap里面,将左指针移动到上一次发现该字符的右一位。注意两个指针可以同时移动。

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            if (s.length() == 0)    return 0;
            Map<Character, Integer> map = new HashMap<>();
            int max = 0;
            for (int i = 0, j = 0; i < s.length(); ++i){
                if (map.containsKey(s.charAt(i))){
                    j = Math.max(j, map.get(s.charAt(i))+1);
                }
                map.put(s.charAt(i), i);
                max = Math.max(max, i-j+1);
            }
            return max;
        }
    }
    

    相关文章

      网友评论

          本文标题:3. Longest Substring Without Rep

          本文链接:https://www.haomeiwen.com/subject/lkohyftx.html