LeetCode395-至少有 K 个重复字符的最长子串


题目链接:https://leetcode-cn.com/problems/longest-substring-with-at-least-k-repeating-characters

public class LeetCode395 {

    public static void main(String[] args) {
        function_1("weitong",1);
        System.out.println("res="+res);
    }
    static int res=0;
    public static int longestSubstring(String s, int k) {
        res=0;
        function_1(s,k);
        return res;
    }
    public static void function_1(String s,int k){
        System.out.println("string="+s);
        //作为统计字母个数的数组
        int [] chars=new int[26];
        for (int i=0;i charsSet=new HashSet<>();//记录有那些字母个数是小于k的
        for(int i=0;i0){
                System.out.println((char)('a'+i)+":"+chars[i]);
            }
            if(chars[i]>0 && chars[i]res? s.length():res);
            return;
        }
        //记录不需要的字母在字符串中的坐标
        List indexList=new ArrayList<>();
        for(int i=0;i=k){
                    function_1(s.substring(0,indexList.get(i)),k);
                }
            }else{
                if((indexList.get(i)-indexList.get(i-1)-1)>=k){
                    function_1(s.substring(indexList.get(i-1)+1,indexList.get(i)),k);
                }
            }
        }
    }
}