题目:
给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。
输入:s = "aaabb", k = 3
输出:3
解释:最长子串为 "aaa" ,其中 'a' 重复了 3 次。
输入:s = "ababbc", k = 2
输出:5
解释:最长子串为 "ababb" ,其中 'a' 重复了 2 次, 'b' 重复了 3 次。
简析:这道题被评为中等难度,非常准确,说难呢,这题思路没找对做起来难,说简单吧,的确没有什么坑。由于题目中说“要求该子串中的每一字符出现次数都不少于 k”,这里可以说很良心了,用分治来做就会简单起来,确定思路之后就该实施了,第一步就考虑该怎么分,我这里常用了二维数组来统计达到k次的字符和没有达到k次的字符,然后就如同切菜一般切除不要的部分留下想要的就行了,说起来还是很简单的,实际操作要麻烦很多,下面就是代码了。
import java.util.Scanner;
public class Solution {
public int longestSubstring(String s, int k) {
ret