Sliding Window - 395. Longest Substring with At Least K Repeating Characters
时间:2022-07-25
本文章向大家介绍Sliding Window - 395. Longest Substring with At Least K Repeating Characters,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
395. Longest Substring with At Least K Repeating Characters
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 = 3
Output:
3
The longest substring is "aaa", as 'a' is repeated 3 times.
Example 2:
Input:
s = "ababbc", k = 2
Output:
5
The longest substring is "ababb", as 'a' is repeated 2 times and 'b' is repeated 3 times.
思路:
题目意思是给定一个字符串和一个k值,要求找出一个最长子串,子串中的字母至少出现k次。可以考虑找出字符串中出现次数小于k次的字符,然后以这种字符为界限,截取字符串,来递归找出最长子串。
代码:
java:
class Solution {
public int longestSubstring(String s, int k) {
if (s == null || s.length() == 0) return 0;
int[] hash = new int[26];
for(char c : s.toCharArray()) hash[c - 'a']++;
// 只要有一个字符少于k次出现,那就不符合要求
boolean fullString = true;
for (int i = 0; i < s.length(); i++) {
if (hash[s.charAt(i) - 'a'] > 0 && hash[s.charAt(i) - 'a'] < k) {
fullString = false;
}
}
if (fullString == true) return s.length();
// 递归找出最长子串
int begin = 0, end = 0, res = 0;
while (end < s.length()) {
if (hash[s.charAt(end) - 'a'] < k) {
res = Math.max(res, longestSubstring(s.substring(begin, end), k));
begin = end + 1;
}
end++;
}
// 最后考虑begin和end之间如果还有字符(end到字符串最后,begin还没有到)就继续找
res = Math.max(res, longestSubstring(s.substring(begin, end), k));
return res;
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Serverless 架构下如何实现日志的实时输出?
- typescript基础篇(1):helloworld
- typescript基础篇(2):数据类型
- 22款好用的CLI工具
- typescript基础篇(3):接口
- 2020 年,苹果的 AI 还有创新吗?
- 毕设有着落了!一套开源的,基于SpringBoot的车牌识别系统
- 详解hive的join优化
- 区块链时代的世界宪章:代码即法律
- SQL 计算公司的期初资产
- nested exception is java.lang.IllegalStateException: refreshAfterWrite requires
- 除了会排序,你对ORDER BY的用法可能一无所知!
- 修改xposed特征并刷机
- Python 爬虫进阶必备 | 关于某租房网站数据加密的分析
- CMAKE学习记录(二)