Q:

A:

分治,对于字符串s的任何一个字符,如果它的频数(在s中出现的次数)小于k,则它一定不会出现在最后的结果里,也就是从它的位置一劈两半,考察左右。对于当前字符串s,我们先建立字典统计其中每种字符出现的次数,对于某字符,假设为x,x在当前字符串中出现的次数小于为kk,kk<k。则所有的字符x可将当前字符串s切片为kk+1个子串,递归对这kk+1个子串进行考察即可。

class Solution {
public:
int longestSubstring(string s, int k) {
return func(s,k,0,s.size()-1);
}
int func(const string& s,const int& k,int le,int ri){
// cout<<le<<" "<<ri<<endl;
if(le>ri){
return 0;
}
unordered_map<char,int> tmp;
for(int i=le;i<=ri;++i){
tmp[s[i]]+=1;
}
int last_partition=le-1;
int res=0;
for(int i=le;i<=ri;++i){
if(tmp[s[i]]<k){
res=max(res,func(s,k,last_partition+1,i-1));
last_partition=i;
}
}
if (last_partition==le-1){ //没分段
return ri-le+1;
}
else{
res=max(res,func(s,k,last_partition+1,ri)); //最后一段
return res;
}
}
};

最新文章

  1. CSharpGL(25)一个用raycast实现体渲染VolumeRender的例子
  2. Objective-C中的浅拷贝和深拷贝(转载)
  3. http协议笔记
  4. LTE Air interface Channels-----http://www.rfwireless-world.com/Tutorials/LTE-logical-transport-physical-channels.html
  5. SQL内部拼接执行SQL语句时,实现变量参数化
  6. Storm与Spark:谁才是我们的实时处理利器
  7. 初始Python类
  8. Planning for a period of time
  9. c# ActiveX 控件的开发
  10. ASP.NET MVC(一) 什么是Razor
  11. 更改Activity的最底层的布局
  12. android判断文件是否是图片文件的方法
  13. UIView和layer的关系
  14. Python3.5:爬取网站上电影数据
  15. Python中的数据类型
  16. 开源库支付库Magicodes.Pay发布
  17. 机器学习之正则化【L1 &amp; L2】
  18. Codeforces264 B. Good Sequences
  19. shell脚本--数值比较
  20. mac mamp环境 和linux下 安装redis 和可视化工具 Redis Desktop Manager

热门文章

  1. paramiko 基于密钥文件登陆
  2. Vue.js_devtools_5.1.0.zip【需要的可自行下载】
  3. css总结 -使用display:inline-block,出现元素高度错位
  4. java - 锁的种类及详解
  5. java类及实例初始化顺序
  6. 微信小程序配置合法域名和业务域名
  7. 2019牛客多校第一场H XOR 线性基模板
  8. Cron表达式及其使用注意事项
  9. go语言 实现对称加密解密算法
  10. 剑指offer 面试题. 滑动窗口的最大值