注意滑动窗口的策略,也就是加入元素和删除元素的规则,注意滑动窗口一般与哈希表一起考查(查找元素是否存在使用unordered_set,对应关系使用unordered_map)或者大数组,这里我把题目分成两种类型

第一种是求解 "最大子串",求出所有满足要求的位置: 这一类题目需要通过一个while循环找到满足要求的区间,找到满足要求的区间的时候就可以直接更新结果了

  1. 最大无重复字符子串 这里的要求是哈希表中不包含加入的字符,所以需要不断增加右边界从而满足要求
  2. 所有字母异位词 这里的要求是哈希表中字符出现次数减少为 0,同时收集字符的条件就是字符长度为目标字符串的长度 第二种是求解 "最小子串" , 或者找出满足条件的区间,这一各类题目需要破坏已经满足满足的条件,从而不断找到最终可以满足题目条件的临界值,比如:
  3. 最小覆盖子串 条件是滑动窗口中包含目标子串,需要破环这一个条件
  4. 长度最小的子数组 条件是总和大于目标值