76. Minimum Window Substring

    xiaoxiao2022-06-22  18

    使用双指针

    class Solution { public: string minWindow(string s, string t) { int m=t.size(); int n=s.size(); int i,j; unordered_map<char,int> mp; for(i=0;i<m;i++) mp[t[i]]++; unordered_map<char,int> tmp; int cnt=0; int sta=0,len=n+1,ind=-1; for(i=0;i<n;i++) { if(mp.find(s[i])!=mp.end()) { tmp[s[i]]++; if(tmp[s[i]]<=mp[s[i]]) cnt++; if(cnt==1) { tmp[s[i]]=1; sta=i; } while(cnt==m) { if(i-sta+1<len) { len=i-sta+1; ind=sta; } tmp[s[sta]]--; if(tmp[s[sta]]<mp[s[sta]]) cnt--; sta++; while(sta<n&&mp.find(s[sta])==mp.end()) sta++; } } } if(ind!=-1) return s.substr(ind,len); return ""; } };

    转载请注明原文地址: https://ju.6miu.com/read-1122874.html

    最新回复(0)