zoukankan      html  css  js  c++  java
  • leetcode 76 最小覆盖子串

    简介

    如果给我做的话, 直接暴力, 应该会超时吧.
    直接看了答案, 感觉也不是特别巧妙.

    双指针

    class Solution {
        Map<Character, Integer> ori = new HashMap<Character, Integer>(); // 要覆盖的
        Map<Character, Integer> cnt = new HashMap<Character, Integer>(); // 当前范围的
        public String minWindow(String s, String t) {
            int tLen = t.length();
            for(int i=0; i<tLen; i++){
                char c = t.charAt(i);
                ori.put(c, ori.getOrDefault(c, 0) + 1); // 将map增加一个
            }
            int l = 0, r = -1;
            int len = Integer.MAX_VALUE, ansL = -1, ansR = -1;
            int sLen = s.length();
            while(r < sLen) {
                ++r;
                if(r < sLen && ori.containsKey(s.charAt(r))) {
                    cnt.put(s.charAt(r), cnt.getOrDefault(s.charAt(r), 0) + 1); // 先r右边移动
                }
                while(check() && l <= r) { // 如果满足条件左边移动
                    if(r - l + 1 < len) {
                        len = r - l + 1;
                        ansL = l;
                        ansR = l + len;
                    } 
                    if (ori.containsKey(s.charAt(l))) {
                        cnt.put(s.charAt(l), cnt.getOrDefault(s.charAt(l), 0) -1);
                    }
                    ++l;
                }
            }
            return ansL == -1 ? "" : s.substring(ansL, ansR);
        }
    
        public boolean check() {
            Iterator iter = ori.entrySet().iterator();
            while(iter.hasNext()) {
                Map.Entry entry = (Map.Entry) iter.next();
                Character key = (Character) entry.getKey();
                Integer val = (Integer) entry.getValue();
                if(cnt.getOrDefault(key, 0) < val) {
                    return false;
                }
            }
            return true;
        }
    }
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    zeplin 登录效果实现
    instanceof 是如何工作的
    JavaScript版—贪吃蛇小组件
    C#+HtmlAgilityPack—糗事百科桌面版V2.0
    Google自定义搜索引擎
    百度网盘资源搜索器
    CSS元素类型
    CSS盒子模型
    Android调用Web服务
    无法将匿名方法转换为System.Delegate
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14878304.html
Copyright © 2011-2022 走看看