最小覆盖子串+滑动窗口
题目:
思考:
- 使用哈希表记录出现次数
- 经典滑动窗口
实现:
class Solution {
public:unordered_map<char,int> s_n;unordered_map<char,int> t_n;bool check(){bool ret=true;for (auto [c,n]:t_n){if (s_n[c]<n){ret=false;break;}}return ret;}string minWindow(string s, string t) {if (s.size()<t.size()){return "";}for (auto c:t){t_n[c]++;s_n[c]=0;}int l=0;int r=-1;int min_size=s.size();int min_l=0;int min_r=-1;for (int i=0;i<s.size();i++){r++;auto find_i=t_n.find(s[i]);if (find_i==t_n.end()){continue;}s_n[s[i]]++;while(l<=r&&check()){if(r-l+1<=min_size){min_size=r-l+1;min_l=l;min_r=r;}s_n[s[l]]--;l++;}}return min_r!=-1?s.substr(min_l,min_size):"";}
};