Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

滑动窗口系列-最短覆盖子串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

class Solution {
public:
unordered_map<char, int> pattern;

string minWindow(string src, string tt) {
//将目标串转换为方便检查处理的hashmap
for (auto x : tt) {
pattern[x]++;
}
int cnt = pattern.size();

string res;
for (int i = 0, j = 0, c = 0; i < src.size(); ++i) {
if (pattern[src[i]] == 1 ) c++;
pattern[src[i]]--; //将src[i]标记为缺少状态
//满足了,并且某一个字符是缺的【非pattern中的字符一定缺;并且一定会被补上】,则往前移动
while (c == cnt && pattern[src[j]] < 0) {
pattern[src[j++]]++;
}
if (c == cnt) {
if (res.empty() || res.size() > i - j + 1) res = src.substr(j, i - j + 1);
}
}
return res;
}
};
你的支持是我坚持的最大动力!