Divide and Conquer

Longest Substring with At Least K Repeating Characters

Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less thanktimes.

public class Solution {
    public int LongestSubstring(string s, int k) {
        return dac(s, 0, s.Length-1, k);
    }

    public int dac(string s, int start, int end, int k){
        if(end - start+1 <k) return 0;
        var counts = new int[26];
        for(var i=start;i<=end;i++){
            counts[s[i] - 'a']++;
        }
        for(var j=0;j<26;j++){
            if(counts[j]>0 && counts[j]<k){
                for(var i=start;i<=end;i++){
                    if(s[i] == j+'a'){
                        var l = dac(s, start, i-1, k);
                        var r = dac(s, i+1, end, k);
                        return Math.Max(l,r);
                    }
                }
            }
        }
        return end - start +1;
    }
}

results matching ""

    No results matching ""