示例 1: 输入: s = “eceba”, k = 2 输出: 3 解释: 则 T 为 “ece”,所以长度为 3。
示例 2: 输入: s = “aa”, k = 1 输出: 2 解释: 则 T 为 “aa”,所以长度为 2。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substring-with-at-most-k-distinct-characters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法
classSolution{publicintlengthOfLongestSubstringKDistinct(String s,int k){
Set<Character> set =newHashSet<>();int res =0;for(int i =0;i<s.length();i++){
set.clear();int count =0;for(int j =i;j<s.length();j++){//如果在集合里,则count++;if(set.contains(s.charAt(j))){
count++;
res =Math.max(res,count);}//如果不在集合且集合大小小于k,把元素加入且count++elseif(set.size()<k){
set.add(s.charAt(j));
count++;
res =Math.max(res,count);}//不满足情况,跳出本次循环else{break;}}}return res;}}