public class Solution {
public int longestSubstring(String s, int k) {
char [] string =s.toCharArray();
return helper(string,0,s.length(),k);//求每个字符的出现次数 都 >=k 的最长子字符串的长度
}
private int helper(char[] string,int start,int end,int k)
{
if(end-start<k)
return 0;
int[] count=new int[26];
for(int i=start;i<end;i++)//统计每个字母出现的次数
{
count[string[i]-'a']++;
}
for(int i=0;i<26;i++)
{
if(count[i]<k&&count[i]>0)//字符串按出现次数小于k的字母 进行划分
{
for(int j=start;j<end;j++)
{
if(string[j]==i+'a')
{
int left=helper(string,start,j,k);
int right=helper(string,j+1,end,k);
return Math.max(left,right);
}
}
}
}
return end-start;
}
}
395. Longest Substring with At Least K Repeating Characters
最新推荐文章于 2017-02-06 15:08:51 发布