滑动窗口算法框架

  1. /* 滑动窗口算法框架 */
  2. void slidingWindow(string s, string t) {
  3. unordered_map<char, int> need, window;
  4. for (char c : t) need[c]++;
  5. int left = 0, right = 0;
  6. int valid = 0;
  7. while (right < s.size()) {
  8. // c 是将移入窗口的字符
  9. char c = s[right];
  10. // 右移窗口
  11. right++;
  12. // 进行窗口内数据的一系列更新
  13. ...
  14. /*** debug 输出的位置 ***/
  15. printf("window: [%d, %d)\n", left, right);
  16. /********************/
  17. // 判断左侧窗口是否要收缩
  18. while (window needs shrink) {
  19. // d 是将移出窗口的字符
  20. char d = s[left];
  21. // 左移窗口
  22. left++;
  23. // 进行窗口内数据的一系列更新
  24. ...
  25. }
  26. }
  27. }