滑动窗口模板:
题目是力扣76题
class Solution {
public:
string minWindow(string s, string t) {
unordered_map<char,int> window,need;
for(auto c : t) need[c]++;
int left = 0,right = 0;
int valid = 0;
int start = 0,len = INT_MAX;
while(right < s.size()){
char c = s[right];
right++;
if(need.count(c)){
window[c]++;
if(window[c] == need[c])
valid++;
}
//判断是否需要缩小窗口
while(valid == need.size()){
if(right - left < len){
start = left;
len = right - left;
}
//移除窗口
char d = s[left];
left++;
if(need.count(d)){
if(window[d] == need[d]){
valid--;
}
window[d]--;
}
}
}
return len == INT_MAX ? "" : s.substr(start,len);
}
};
本文深入探讨了滑动窗口算法的实现细节,通过力扣76题为例,讲解了如何使用C++进行代码实现。文章提供了完整的代码示例,包括窗口的初始化、条件判断以及窗口的缩放过程。
1161

被折叠的 条评论
为什么被折叠?



