leetcode 76. 最小覆盖子串 (java)
·
有一点难
谢谢题解
滑动窗口呜呜呜
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);
}
}
更多推荐
所有评论(0)