class Solution {
public:
string minWindow(string s, string t) {
unordered_map<char,int>need;
int resLen = INT32_MAX, start = 0;
for(char c:t)
need[c]++;
int needCnt = t.size();
for(int left=0,right=0; left<s.size(),right<s.size(); ){
while(right<s.size() && needCnt>0){
if(need[s[right]]>0)
needCnt--;
need[s[right]]--;
right++;
}
while(left<s.size() && need[s[left]]<0){
need[s[left]]++;
left++;
}
if(needCnt==0 && right-left<resLen){
resLen = right - left;
start = left;
}
//考虑下一个合法序列
need[s[left]]++;
needCnt++;
left++;
}
return resLen==INT_MAX?"":s.substr(start,resLen);
}
};
76. 最小覆盖子串
最新推荐文章于 2024-05-08 09:09:23 发布