

摘要
这道题要在字符串里找「最长的一段子串」,且这段子串里出现的每个字符,出现次数都不少于 k。例如 s = "ababbc", k = 2 时,"ababb" 里 a 出现 2 次、b 出现 3 次,都 ≥ 2,长度 5 就是答案;而整串里有 c 只出现 1 次,所以不能整段算。
做法是分治:先统计当前段里每个字符出现次数,把「出现次数小于 k」的字符当作「分隔符」——任何合法子串都不能包含它们,否则那个字符次数一定不够。用这些分隔符把当前串拆成多段,对每一段递归求「至少 k 次」的最长子串长度,取最大值;若当前段里没有这种分隔符,说明当前段每个字符都 ≥ k 次,直接返回段长。下面用 Swift 实现并说明细节。

描述
给你一个字符串 s 和一个整数 k,请你找出 s 中的最长子串,要求该子串中的每一字符出现次数都不少于 k。返回这一子串的长度;如果不存在这样的子串则返回 0。
示例 1:
输入: s = "aaabb", k = 3 输出: 3 解释: 最长子串为 "aaa" ,其中 'a' 重复了 3 次。'b' 只有 2 次,不能包含在合法子串里。
示例 2:
输入: s = "ababbc", k = 2 输出: 5 解释: 最长子串为 "ababb" ,其中 'a' 重复了 2 次,'b' 重复了 3 次。'c' 只出现 1 次,所以含 c 的段都不合法。
提示:



