您的位置:首页 > 其它

Leetcode 395. Longest Substring with At Least K Repeating Characters

2017-08-02 22:35 405 查看
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 = 3

Output:
3

The longest substring is "aaa", as 'a' is repeated 3 times.


Example 2:
Input:
s = "ababbc", k = 2

Output:
5

The longest substring is "ababb", as 'a' is repeated 2 times and 'b' is repeated 3 times.


找出小于 K 的 字符串。

如果 没有小于 K 的 字符串,则返回 字符串 s 的长度

然后使用 归递来找最大的长度

public int longestSubstring(String s, int k) {
if (s.length() < k) return 0;
String lessThanK = helper(s, k);
if (lessThanK.length() == 0) return s.length();
String[] tokens = s.split("[" + lessThanK + "]");
int maxLen = 0;
for (String token : tokens) {
maxLen = Math.max(maxLen, longestSubstring(token, k));
}
return maxLen;
}

private String helper(String s, int k) {
int[] map = new int[26];
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
map[c - 'a']++;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < map.length; i++) {
if (map[i] > 0 && map[i] < k) sb.append((char) (i + 'a'));
}
return sb.toString();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐