2026.7.1
1.无重复字符的最长字串。可以记住下面这段话滑动窗口的本质就是维护一个始终满足题目要求的连续区间。这道题中窗口内始终不能有重复字符。右指针从第一个字符开始不断向右扩展窗口尝试加入新的字符如果加入后出现重复就不断移动左指针缩小窗口直到窗口重新合法。这样对于每一个右指针位置窗口都是以它为右边界的最长无重复连续子串再不断更新窗口长度即可得到最终答案。整个过程中左右指针都只向右移动因此时间复杂度为 O(n)。2.字母异位词首先判断s的长度是否小于p如果小于说明s中不可能存在长度为len(p)的子串因此直接返回空列表。然后使用两个长度为 26 的数组p_count和s_count分别统计p和s的第一个长度为len(p)的窗口中每个字母出现的次数。初始化完成后如果两个数组相等说明第一个窗口就是p的异位词将下标0加入结果。接着开始滑动窗口从下标len(p)开始遍历s。每次滑动时将右边新进入窗口的字符对应的计数加一再将左边离开窗口的字符对应的计数减一这样窗口大小始终保持为len(p)。每完成一次更新s_count就比较p_count和s_count是否完全相同如果相同说明当前窗口是p的一个异位词将当前窗口的起始下标加入结果列表。最后返回结果列表。整个过程中窗口长度始终保持为len(p)因此时间复杂度为 O(n)。