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:
Example 2:
找出小于 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();
}
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();
}
相关文章推荐
- leetcode 395. Longest Substring with At Least K Repeating Characters
- Leetcode 395. Longest Substring with At Least K Repeating Characters 至少K重复最长子序列 解题报告
- 【Leetcode】395. Longest Substring with At Least K Repeating Characters
- leetcode_[python/C++]_395_Longest Substring with At Least K Repeating Characters
- LeetCode[395] Longest Substring with At Least K Repeating Characters
- leetcode 395. Longest Substring with At Least K Repeating Characters 最长K个数量的字符 + DFS深度优先搜索
- LeetCode - 395 - Longest Substring with At Least K Repeating Characters
- Leetcode: Longest Substring with At Least K Repeating Characters
- 【LeetCode】 395. Longest Substring with At Least K Repeating Characters
- LeetCode No.395 Longest Substring with At Least K Repeating Characters
- [LeetCode] 395. Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串
- [Leetcode] 395. Longest Substring with At Least K Repeating Characters 解题报告
- leetcode_[python/C++]_395_Longest Substring with At Least K Repeating Characters_(递归非递归)
- [LeetCode] 395. Longest Substring with At Least K Repeating Characters
- 【Leetcode】395. Longest Substring with At Least K Repeating Characters
- Leetcode-395. Longest Substring with At Least K Repeating Characters
- LeetCode-Longest Substring with At Least K Repeating Characters
- LeetCode 395. Longest Substring with At Least K Repeating Characters
- leetcode 395. Longest Substring with At Least K Repeating Characters
- LeetCode赛题395----Longest Substring with At Least K Repeating Characters