zoukankan      html  css  js  c++  java
  • 3. Longest Substring Without Repeating Characters

    June-12-2019
    直观做法是保持滑窗,滑窗内出现的字母用MAP记录位置。
    单向扩大滑窗,发现已出现字母,要查上次出现的位置,移动左指针。
    一开始考虑的是移动左指针之后,要从MAP中删除移动过程中的字母,其实不用,
    因为继续的时候,发现MAP中的字母出现在滑窗外,证明是应该被删除的,所以需要更新最大值,但不应该把左指针移动到上次出现位置的下一个。
    left = Math.max(left, map.get(c) + 1)就是上面描述的

        public int lengthOfLongestSubstring(String s) {
            if (s == null) return 0;
            int res = 0;
            Map<Character, Integer> dictMap = new HashMap<>();
            int l = 0;
            for (int i = 0; i < s.length(); i ++) {
                char c = s.charAt(i);
                if (dictMap.containsKey(c)) {
                    l = Math.max(l, dictMap.get(c) + 1);   
                }
                res = Math.max(res, i - l + 1);
                dictMap.put(c, i);
                
            }
            return res;
        }
    
  • 相关阅读:
    怎样用HTML5 Canvas制作一个简单的游戏
    js面向对象
    javascript闭包
    javascript变量的作用域
    5-22
    5-23
    14-5-21 硬代码
    14-5-19 类和对象
    array
    生成干扰线
  • 原文地址:https://www.cnblogs.com/reboot329/p/5876194.html
Copyright © 2011-2022 走看看