有一点难

谢谢题解

滑动窗口呜呜呜

class Solution {
    public String minWindow(String s, String t) {
        // wuzhenyu
        // 滑动窗口
        int[] cnts = new int[100];
        for (char c : t.toCharArray()) cnts[c - 'A']++;
        char[] cs = s.toCharArray();
        int num = t.length(), pre = 0, ans = cs.length + 1, pos = 0, len = cs.length;
        for (int i = 0; i < len; ++i) {
            if (--cnts[cs[i] - 'A'] >= 0) num--;
            while (pre < len && cnts[cs[pre] - 'A'] < 0) cnts[cs[pre++] - 'A']++;
            if (num == 0 && i - pre + 1 < ans) {
                ans = i - pre + 1;
                pos = pre;
            }
        }
        return ans == cs.length + 1 ? "" : s.substring(pos, pos + ans);
    }
}

更多推荐