395. Longest Substring with At Least K Repeating Characters

来源:互联网 发布:淘宝朋友代付怎么查看 编辑:程序博客网 时间:2024/05/29 03:31

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 than k times.

Example 1:

Input:s = "aaabb", k = 3Output:3The longest substring is "aaa", as 'a' is repeated 3 times.

Example 2:

Input:s = "ababbc", k = 2Output:5The longest substring is "ababb", as 'a' is repeated 2 times and 'b' is repeated 3 times.
先计算字符串里每个字母的个数,若某个字母x的个数小于k,则它一定不在最终的子字符串里。

然后利用分治的思想,以x分割字符串,计算每个子字符串里的Longest Substring。

public class Solution {    public int longestSubstring(String s, int k) {        if(s.length()<k) return 0;        int[] count=new int[26];        String sp=null;        int j=0,max=0;        for(int i=0;i<s.length();i++){            count[s.charAt(i)-'a']++;        }        while(j<count.length&&(count[j]>=k||count[j]==0)) j++;        if(j==count.length) return s.length();        sp=(char)(j+'a')+"";        String[] temp=s.split(sp);        for(String t:temp){            if(t.length()>0)            max=Math.max(max,longestSubstring(t,k));        }        return max;    }}



0 0