本文主要是介绍leetcode-395、至少有 K 个重复字符的最长子串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
https://leetcode-cn.com/problems/longest-substring-with-at-least-k-repeating-characters/
思路:二分
void search(string s, int k, int start, int end, int &res) {if (start > end || end - start + 1 < k) {return;}unordered_map<char, int> un_map;for (int i = start; i <= end; i++) {un_map[s[i]] += 1;}int idx = start;for (; idx <= end; idx++) {if (un_map[s[idx]] < k) {break;}}//二分查找,找到第一个是最大结果if (idx > end) {res = max(res, idx - start);return;}search(s, k, start, idx - 1, res);search(s, k, idx + 1, end, res);}int longestSubstring(string s, int k) {if (s.size() < k) {return 0;}if (k == 1) {return s.size();}int res = 0;search(s, k, 0, s.size() - 1, res);return res;}
这篇关于leetcode-395、至少有 K 个重复字符的最长子串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!