395. 至少有K个重复字符的最长子串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了395. 至少有K个重复字符的最长子串相关的知识,希望对你有一定的参考价值。
1 class Solution 2 { 3 public: 4 int longestSubstring(string s, int k) 5 { 6 if(s.empty()) return 0; 7 vector<int> hash(26); 8 for(auto a : s) hash[a - ‘a‘] ++;//统计字符串中字符出现的次数 9 //看整个字符串出现的字符是否满足均至少为k 10 bool fullstring = true; 11 for(auto a : s) 12 { 13 if(hash[a - ‘a‘] > 0 && hash[a - ‘a‘] < k) fullstring = false; 14 } 15 if(fullstring == true) return s.size(); 16 17 int begin = 0,end = 0,result = 0; 18 while(end < s.size()) 19 { 20 if(hash[s[end] - ‘a‘] < k)//如果出现的次数小于k,则切割成[begin,end - 1]和[end + 1,...] 21 { 22 result = max(result,longestSubstring(s.substr(begin,end - begin),k)); 23 begin = end + 1; 24 } 25 end ++; 26 } 27 result = max(result,longestSubstring(s.substr(begin),k));//最后还要进行统计result 28 return result; 29 } 30 };
以上是关于395. 至少有K个重复字符的最长子串的主要内容,如果未能解决你的问题,请参考以下文章
395 Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子串