ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

为什么你的滑动窗口总是写不对?

2026/8/14 10:31:28 拓冰建站 浏览量
为什么你的滑动窗口总是写不对?

求解思路

这道题直接求解很困难,因为我们既要保证每种字符出现次数≥k,又要让子串尽可能长,这两个条件相互制约难以平衡。

但如果我们换个角度,先固定子串中必须恰好包含require种不同的字符,然后在这个约束下用滑动窗口找最长子串,问题就变得简单了。我们从require=1开始枚举到require=26(英文字母最多26种),对于每个require值,用双指针维护一个窗口,右指针不断扩展收集字符,当窗口中的字符种类数超过require时,左指针就收缩窗口把多余的字符吐出去,在满足"种类数等于require且每种字符次数都≥k"这个条件时更新答案。

代码实现

publicstaticintlongestSubstring(Stringstr,intk){char[]s=str.toCharArray();intn=s.length;int[]cnts=