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;
        }
    
  • 相关阅读:
    输出重定向
    echo带颜色输出
    shell学习视频目录
    css盒模型
    jQuery表格模糊搜索
    mysql基础语法3
    mysql基础语法2
    mysql基础语法1
    pyspider框架的使用
    quill富文本框图片上传重写
  • 原文地址:https://www.cnblogs.com/reboot329/p/5876194.html
Copyright © 2011-2022 走看看