题解 | 牛群名字覆盖

牛群名字覆盖

https://www.nowcoder.com/practice/e6cef4702e7841f59cf47daf9bafb241

  1. 最小覆盖子串问题。
  2. hash 的写法是精髓。

import java.util.*;


class Solution {
    private boolean check(int[] hash) {
        for (int i : hash) {
            if (i < 0) {
                return false;
            }
        }
        return true;
    }

    public String minWindow(String s, String t) {
        int[] hash = new int[128];
        for (int i = 0; i < t.length(); ++i) {
            --hash[t.charAt(i)];
        }

        final int n = s.length();
        final char[] cs = s.toCharArray();
        int l = 0;
        int min_l = -1, min_r = -1;
        for (int r = 0; r < n; ++r) {
            ++hash[s.charAt(r)];
            if (check(hash)) {
                while (l <= r && check(hash)) {
                    --hash[s.charAt(l)];
                    ++l;
                }
                if (min_r == -1 || min_r - min_l + 1 > r - l + 2) {
                    min_l = l - 1;
                    min_r = r;
                }
            }
        }
        if (min_r == -1) {
            return "";
        }
        return s.substring(min_l, min_r + 1);
    }
}

全部评论

相关推荐

04-08 13:31
已编辑
门头沟学院 前端工程师
D0cC:京东营收1万多亿人民币,阿里9000多亿,虽然他俩利润都没腾讯和字节多,但是很恐怖了啊,负担了多少打工人的薪水
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务