自己 滑动窗

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_;
}
};
浙公网安备 33010602011771号