自己 滑动窗
class Solution { public: // 自己第一个 5% 时间满 内存64% 动态滑动窗 string minWindow1(string s, string t) { if(s.size()<t.size()) {return "";} vector<int> t_v; unordered_map<char,int> t_map; for(int i=0;i<t.size();i++){ //t_map[t[i]-'a']++; t_map[t[i]]++; } unordered_map<char,int> c_map; int left=-1; int right=0; int min_=s.size(); int left_taget=-1; int right_taget=-1; string result_=""; for(int i=0;i<s.size();i++){ right=i; if(t_map.contains(s[i])){ if(left==-1)left=i; } else{ continue; } c_map[s[i]]++; bool ok_=1; for(auto &pair:t_map){ if(c_map[pair.first]<t_map[pair.first]) { ok_=0; break; } } if(ok_){ if(right-left+1<=min_){ left_taget=left; right_taget=right; min_=right-left+1; } c_map[s[left]]--; left++; while(left<=right && left<s.size()){ // cout<< " left" <<left<<endl; if(c_map.contains(s[left])){ c_map[s[i]]--; --i; break; } left++; } // c_map[s[i]]--; // --i; } } if(left_taget>=0 && right_taget>=0) { if(left_taget==right_taget){ result_=s[left_taget]; } else{ result_=s.substr(left_taget,right_taget-left_taget+1); //1子字符串的起始位置(索引) 2要提取的子字符串长度 } } return result_; } string minWindow(string s, string t) { string result_; vector<int> t_v(26); for(int i=0;i<t.size();i++){ t_v[t[i]-'a']++; } vector<int> current_v; map<vector<int>,int> all_map; for(int right=0;right<s.size();right++){ current_v[s[right]-'a']++; all_map[current_v]++; } for(int right=0;right<s.size();right++){ all_map } return result_; } };