美文网首页
子串——还是符合要求最小串(六)

子串——还是符合要求最小串(六)

作者: 旺叔叔 | 来源:发表于2018-11-22 17:11 被阅读0次

LeetCode_76_MinimumWindowSubstring

题目分析:

和上题一个意思,找序列满足某种条件的串。只是又回到字符串了。双指针。

解法:

public static String minWindow(String s, String t) {
    String result = "";
    Map<Character, Integer> map = new HashMap<>();
    for (int i = 0; i < t.length(); i++)
        map.put(t.charAt(i), map.getOrDefault(t.charAt(i), 0) + 1);

    int count = map.size();
    int left = 0, right = 0, minLength = s.length() + 1;

    for (; right < s.length(); right++) {
        //凑到某字符一个
        if(map.containsKey(s.charAt(right))){
            int tempNum = map.get(s.charAt(right));
            map.put(s.charAt(right), tempNum - 1);
            //刚好凑到某个字符 0 == tempNum - 1 而不是 0 >= tempNum - 1 因为count代表还有多少"种"字符要凑
            if(0 == tempNum - 1)
                count--;
            //凑到所有字符所需所有
            while(0 == count){
                //若是更短的值 取出来
                if(right - left + 1 < minLength) {
                    minLength = right - left + 1;
                    result = s.substring(left, left + minLength);
                }
                //如果接下来左移要排除的是t中的字符,要更新count
                if(map.containsKey(s.charAt(left))){
                    int tempLeft = map.get(s.charAt(left));
                    map.put(s.charAt(left), tempLeft + 1);
                    if(tempLeft + 1 > 0) ++count;
                }
                //上面已经保存了当前的最小值,可以left++直接假定至少丢一个开头再继续,后面找不出补位的结束就是正确结果
                left++;
            }
        }
    }

    return result;
}

相关文章

  • 子串——还是符合要求最小串(六)

    LeetCode_76_MinimumWindowSubstring 题目分析: 解法:

  • 子串——符合要求最小串(五)

    LeetCode_209_MinimumSizeSubarraySum 题目分析: 解法:

  • 子串——依旧是符合要求最小串(七)

    LeetCode_632_SmallestRange 题目分析: 解法:

  • 2019-10-24

    集上夺命小串--撸串就撸最精致的串串 告别“小脏店”,“沿街摊”--吃串串也要吃最精致的串串,在夺命小串,做一枚精...

  • 动态规划之最大公共子序列

    题目的大意是已知两个字符串,求两个字符串的最大公共子序列。假设串X[i]是大串,Y[j]是小串,(i>j)那么在问...

  • 《朋友们都丢到了哪里》

    一个个 那么鲜活的 三十年积攒下来的 朋友们 不分先后 不论长弱 统统随着一小串一小串的数字 丢了 这些年 我们已...

  • 132. 分割回文串 II

    给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。输入:s = ...

  • 02 石头

    冬子走向营区角落的一个小楼,标号043,标号下面还有一小串字符,看上去不是很清楚。 进去找了间面朝西的房间,冬子无...

  • LeetCode 132. 分割回文串 II

    题目 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的最少分割次数 。 例:输入...

  • 如此商家

    昨天去吃的串店,主打海鲜粥、小串,我不爱喝粥,冲着小串去的。 味道合格,环境不错,吃烧烤本身在意的是那么一种烟火气...

网友评论

      本文标题:子串——还是符合要求最小串(六)

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