双指针的一种技巧;
维护一个窗口然后更新答案
/* 滑动窗口算法框架 */
void slidingWindow(string s, string t) {
unordered_map<char, int> need, window;
for (char c : t) need[c]++;
int left = 0, right = 0;
int valid = 0;
while (right < s.size()) {
char c = s[right];
right++; // 右移窗口
...// 进行窗口内数据的一系列更新
/*** debug 输出的位置 ***/
printf("window: [%d, %d)\n", left, right);
/********************/
while (window needs shrink) {// 判断左侧窗口是否要收缩
char d = s[left];
left++;// 左移窗口
... // 进行窗口内数据的一系列更新
}
}
}