博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
395. Longest Substring with At Least K Repeating Characters
阅读量:6856 次
发布时间:2019-06-26

本文共 1940 字,大约阅读时间需要 6 分钟。

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 = 3Output:3The longest substring is "aaa", as 'a' is repeated 3 times.

 

Example 2:

Input:s = "ababbc", k = 2Output:5The longest substring is "ababb", as 'a' is repeated 2 times and 'b' is repeated 3 times.

 

 

 

 
class Solution {public:    int longestSubstring(string s, int k) {        int n = s.size();        return helper(s, 0, n-1, k);    }private:    // looking for longest string within index range [l, r]    int helper(string& s, int l, int r, int k) {        vector
mp(26, 0); for (int i = l; i <= r; i++) mp[s[i]-'a']++; // check whether the whole string meets requirement bool pass = true; for (int i = 0; i < 26 && pass; i++) { if (mp[i] && mp[i] < k) pass = false; } if (pass) return r-l+1; // using all characters with occurrence > 0 && < k to divide the string int i = l, ans = 0; for (int j = l; j <= r; j++) { if (mp[s[j]-'a'] && mp[s[j]-'a'] < k) { ans = max(ans, helper(s, i, j-1, k)); i = j+1; } } return max(ans, helper(s, i, r, k)); }};

还有一种解法:

int longestSubstring(string s, int k) {        if(s.size() == 0 || k > s.size())   return 0;        if(k == 0)  return s.size();                unordered_map
Map; for(int i = 0; i < s.size(); i++){ Map[s[i]]++; } int idx =0; while(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); }

 

转载于:https://www.cnblogs.com/jxr041100/p/7904009.html

你可能感兴趣的文章
Ubuntu 12.04 mysql 源码安装--mysql.5.5.x
查看>>
new/delete 和 malloc/free有什么区别和联系
查看>>
Android:ActivityOptions
查看>>
php面向对象浅谈
查看>>
Android BlueDroid(一):BlueDroid概述
查看>>
web缓存软件
查看>>
UNIX 缩写风格
查看>>
2.Moving Problematic Files To A Separate Folder
查看>>
MyEclipse下解决XXX cannot be resolved
查看>>
对于规范和实现,你会混淆吗?
查看>>
开发【妞妞助手】的历程?【1】
查看>>
shell 脚本摘录
查看>>
Error: An App ID with identifier "*****" is not av
查看>>
dva 中使用 axios 统一拦截错误示例
查看>>
Corba开发总结(三)---基于ZTECORBA的Client程序
查看>>
postgresql数据类型之Serial
查看>>
DB日志结构
查看>>
C Primer Plus 第13章 文件输入/输出 13.6 标准I/O内幕
查看>>
手写itoa__double转int时误差
查看>>
拥抱docker
查看>>