395. Longest Substring with At Least K Repeating Characters
来源:互联网 发布:兄弟连java培训 编辑:程序博客网 时间:2024/06/07 13:24
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 size = s.size(); if(size==0) return 0; vector<int> v(26,0); int flag=0; int max=0; for(int i = 0;i < size;i++){ v[s[i]-'a']++; flag=1; for(int j=0;j<26;j++){ if(v[j]<k&&v[j]>0) flag=0; } if(flag==1) max=i+1; } //cout<<s<<' '<<max<<' '<<s.substr(max,size-max)<<endl; int ma = Solution::longestSubstring(s.substr(max>0?max:1,size-1),k); return ma>max ? ma:max; }};
也是贪心算法,每一遍循环在上一次循环得到的起点开始,得到最长字符串后,将下一位置也即下一循环的起点算出。
class Solution {public: int longestSubstring(string s, int k) { int size = s.size(); if(size==0) return 0; vector<int> v(26,0); int flag=0; int max=0; int now=0; int now_i=0; int i = 0; while(now<=size){ now_i=0; for(i = now;i < size;i++){ v[s[i]-'a']++; flag=1; for(int j=0;j<26;j++){ if(v[j]<k&&v[j]>0) flag=0; } if(flag==1){ now_i=i; max=i+1-now>max ? i+1-now : max; } } if(now_i!=0&&now_i!=now) now=now_i++; else now++; for(int j=0;j<26;j++){ v[j]=0; } } return max; }};
阅读全文
0 0
- 395. 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
- 【Leetcode】395. Longest Substring with At Least K Repeating Characters
- leetcode 395. 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
- 395. Longest Substring with At Least K Repeating Characters
- [LeetCode] 395. Longest Substring with At Least K Repeating Characters
- LeetCode 395. 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
- 395. Longest Substring with At Least K Repeating Characters
- 【LeetCode】 395. 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
- [LeetCode]395. Longest Substring with At Least K Repeating Characters
- 【Leetcode】395. Longest Substring with At Least K Repeating Characters
- oc的指针是什么
- 企慧Q5快速开发平台系列之二:数据查询设计
- linux下如何找回mysql root密码
- Android开发之Android5.x的状态栏变色相关东西
- 网页设计与制作(HTML+CSS)(一)
- 395. Longest Substring with At Least K Repeating Characters
- Android面试题-机型适配之痛,例如三星、小米、华为、魅族系统问题处理方式
- c++中string的几种赋值方法
- Springboot 整合 Mybatis 的完整 Web 案例
- 外网使用easyconnect链接校园网
- 郑州大学校园网连接
- 项目性能检测(一) 求php脚本运行时长
- ViewPager轮播图
- Asp.net管道