Longest Substring with At Least K Repeating Characters
来源:互联网 发布:sql update 更新多行 编辑:程序博客网 时间:2024/06/06 02:59
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.
思路:刚开始想用滑动窗口法,但是失败,看了这个链接,才弄懂是怎么个算法;https://all4win78.wordpress.com/2016/09/08/leetcode-395-longest-substring-with-at-least-k-repeating-characters/comment-page-1/ 总体思想就是divide and conquer.
算法基本原理是,先遍历整个string,并记录每个不同的character的出现次数。如果所有character出现次数都不小于k,那么说明整个string就是满足条件的longest substring,返回原string的长度即可;如果有character的出现次数小于k,假设这个character是c,因为满足条件的substring永远不会包含c,所以满足条件的substring一定是在以c为分割参考下的某个substring中。所以我们需要做的就是把c当做是split的参考,在得到的String[]中再次调用我们的method,找到最大的返回值即可。
public class Solution { public int longestSubstring(String s, int k) { if(s == null || k<0) return 0; HashMap<Character, Integer> hashmap = new HashMap<Character, Integer>(); for(int i=0; i<s.length(); i++){ char c = s.charAt(i); if(hashmap.containsKey(c)){ hashmap.put(c, hashmap.get(c)+1); } else { hashmap.put(c, 1); } } Character delimiter = null; for(Character c: hashmap.keySet()){ if(hashmap.get(c)<k){ delimiter = c; } } if(delimiter == null) { return s.length(); } int maxlen = 0; String[] splits = s.split(""+delimiter); for(String str: splits){ maxlen = Math.max(maxlen, longestSubstring(str,k)); } return maxlen; }}
0 0
- 395. Longest Substring with At Least K Repeating Characters
- 395. Longest Substring with At Least K Repeating Characters
- 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
- Longest Substring with At Least K Repeating Characters
- LeetCode[395] Longest Substring with At Least K Repeating Characters
- Longest Substring with At Least K Repeating Characters
- 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
- altium designer 制作元器件封装库
- matlab AHP层次分析法求权重
- delphi 控件大全(确实很全)
- ContentProvider提供的对数据库批量操作的方法和对数据库变化监控的方法
- Qt学习之十四:event() 与eventFilter()
- Longest Substring with At Least K Repeating Characters
- 关于KVM中处理外部中断的处理代码
- Angular2学习指南
- 关于NVDIMM和测试模块的内核编译
- GHost win7(2016.05)版本安装后,清除流氓软件的过程
- 公有云通用管理接口 Cloud Infrastructure Common Management Interface - CICMI
- 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
- 计算多项式值的秦九韶算法
- 菜鸟级java工程师的成长之路