题解 | #最小覆盖子串#
最小覆盖子串
https://www.nowcoder.com/practice/c466d480d20c4c7c9d322d12ca7955ac
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param S string字符串
* @param T string字符串
* @return string字符串
*/
bool chenck(unordered_map<char, int>& map) {
for (auto i : map) {
if (i.second > 0)
return false;
}
return true;
}
string minWindow(string S, string T) {
// write code here
int l = 0, r = 0;
int min_l = -1, min_r = 22222-1;
unordered_map<char, int> map;
for (char i : T) {
map[i]++;
}
while (r < S.size()) {
if (map.find(S[r]) != map.end()) {
map[S[r]]--;
while (chenck(map)) {
if ((r - l + 1) < (min_r - min_l + 1)) {
min_l = l;
min_r = r;
}
if (map.find(S[l]) != map.end()) {
map[S[l]]++;
}
++l;
}
}
++r;
}
if (min_l == -1)
return "";
return string(S.begin()+min_l,S.begin()+min_r+1);
}
};
没想到半个小时内写了个困难。。。。。。
联想公司福利 1548人发布