详细思路
class Solution { public: unordered_map<char,int>need,have; string minWindow(string s, string t) { for(int i=0;i<t.size();i++){ need[t[i]]++; } int left=0,right=-1,ans_len=0x3f3f3f3f,ans_beg=0; while(right<(int)s.size()){ right++; have[s[right]]++; cout<<have[s[right]]; while(check()&&left<=right){ if(right-left+1<ans_len){ ans_len=right-left+1; ans_beg=left; } have[s[left]]--; left++; } } return ans_len==0x3f3f3f3f?"":s.substr(ans_beg,ans_len); } bool check(){ for(auto mPair:need){ auto it=have.find(mPair.first); if(it==have.end())return false; if(it->second<mPair.second)return false; } return true; } };
原文:https://www.cnblogs.com/zhouzihong/p/15078871.html