Longest Substring with At Least K Repeating Characters
2016-09-08 09:29
405 查看
开始想到了用出现次数小于K的字符做分割符,觉得用map存储出现次数会增加lgn的时间复杂度,也顾忌分割之后每小段还会有出现次数小于K的字符出现,但是没能更进一步想到用用递归和哈希表来解决这两个问题。用递归的时候又蠢得没用分治,用了一颗多叉的递归树,导致分枝控制条件各种复杂,最后还是回归官方答案的分治法了QAQ
class Solution {
public:
int longestSubstring(string s, int k) {
if (s.size() == 0 || k > s.size()) return 0;
if (k == 0) return s.size();
unordered_map<char, int> Map;
for (int i = 0; i < s.size(); i++) {
Map[s[i]]++;
}
int idx = 0;
while (idx < s.size() && Map[s[idx]] >= k) idx++;
if (idx == s.size()) return s.size();
int left = longestSubstring(s.substr(0, idx), k);
int right = longestSubstring(s.substr(idx + 1), k);
return max(left, right);
}
};
class Solution {
public:
int longestSubstring(string s, int k) {
if (s.size() == 0 || k > s.size()) return 0;
if (k == 0) return s.size();
unordered_map<char, int> Map;
for (int i = 0; i < s.size(); i++) {
Map[s[i]]++;
}
int idx = 0;
while (idx < s.size() && Map[s[idx]] >= k) idx++;
if (idx == s.size()) return s.size();
int left = longestSubstring(s.substr(0, idx), k);
int right = longestSubstring(s.substr(idx + 1), k);
return max(left, right);
}
};
相关文章推荐
- [LeetCode] Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子字符串
- 395. Longest Substring with At Least K Repeating Characters
- Longest Substring with At Least K Repeating Characters
- 395. Longest Substring with At Least K Repeating Characters
- longest-substring-with-at-least-k-repeating-characters
- LeetCode-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
- Longest Substring with At Least K Repeating Characters
- Longest Substring with At Least K Repeating Characters问题及解法
- leetcode_[python/C++]_395_Longest Substring with At Least K Repeating Characters_(递归非递归)
- 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
- Leetcode: Longest Substring with At Least K Repeating Characters
- Longest Substring with At Least K Repeating Characters
- Longest Substring with At Least K Repeating Characters
- 395. Longest Substring with At Least K Repeating Characters
- 395. Longest Substring with At Least K Repeating Characters