时间复杂度(O( n))
class Solution {
public:
string minWindow(string s, string t) {
vector<bool> chsocurr(128,0);
vector<int> chscount(128,0);
for(int i=0;i<t.size();++i){
chsocurr[t.at(i)]=1;
chscount[t.at(i)]+=1;
}
int count=0;
for(int ii=0;ii<chsocurr.size();++ii) if(chsocurr[ii]) count+=1;
int start=0;
int start_record=0;
int minLen = s.length();
for(int j=0;j<s.length();++j){
if(chsocurr[s.at(j)]){
if(chscount[s.at(j)]>0){
chscount[s.at(j)]-=1;
if(chscount[s.at(j)]==0 && count>0) count-=1;
}else chscount[s.at(j)]-=1;
}
while(start<=j&&(chsocurr[s.at(start)]==0||(chsocurr[s.at(start)]&&chscount[s.at(start)]<0))){
if(chsocurr[s.at(start)]) chscount[s.at(start)]+=1;
start+=1;
}
if(count==0&&minLen>j-start){
minLen = j-start;
start_record=start;
}
}
if(count>0)return "";
return s.substr(start_record,minLen+1);
}
};