至少有K个重复字符的最长子串
/**
* 分治
*/
class Solution {
// dp[i]:表示以i为结尾满足条件的子串的长度
public int longestSubstring(String s, int k) {
int len = s.length();
return dfs(s, 0, len - 1, k);
} public int dfs(String s, int l, int r, int k) {
int[] c = new int[26];
for (int i = l; i <= r; i++) {
c[s.charAt(i) - 'a'] ++;
} // 找到第一个不满足条件的字母
char split = '0';
for (int i = 0; i < 26; i++) {
if (c[i] > 0 && c[i] < k) {
split = (char)(i + 'a');
break;
}
} // 说明s[l,r]满足题意
if (split == '0') {
return r - l + 1;
} int i = l;
int res = 0;
while (i <= r) {
// 先找到第一个不等于split的下标
while (i <= r && s.charAt(i) == split) i++; if (i > r) break; int start = i;
// 再找到第一个不等于split的下标
while (i <= r && s.charAt(i) != split) i++; // 分治
int len = dfs(s, start, i - 1, k);
res = Math.max(res, len);
} return res;
}
}
至少有K个重复字符的最长子串的更多相关文章
- Java实现 LeetCode 395 至少有K个重复字符的最长子串
395. 至少有K个重复字符的最长子串 找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k .输出 T 的长度. 示例 1: 输入: s = " ...
- 395.至少有 K 个重复字符的最长子串
题目 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于k .返回这一子串的长度. 示例 1: 输入:s = "aaabb" ...
- [Swift]LeetCode395. 至少有K个重复字符的最长子串 | 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) su ...
- leetcode 395 至少有K个重复字符的最长子串
找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k .输出 T 的长度. 示例 1: 输入: s = "aaabb", k = 3 输 ...
- 395 Longest Substring with At Least K Repeating Characters 至少有K个重复字符的最长子串
找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k .输出 T 的长度.示例 1:输入:s = "aaabb", k = 3输出:3最 ...
- 图解leetcode —— 395. 至少有K个重复字符的最长子串
前言: 每道题附带动态示意图,提供java.python两种语言答案,力求提供leetcode最优解. 描述: 找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不 ...
- 395. 至少有K个重复字符的最长子串
Q: A: 分治,对于字符串s的任何一个字符,如果它的频数(在s中出现的次数)小于k,则它一定不会出现在最后的结果里,也就是从它的位置一劈两半,考察左右.对于当前字符串s,我们先建立字典统计其中每种字 ...
- LeetCode--003--无重复字符的最长子串
问题描述: 给定一个字符串,找出不含有重复字符的最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc" ...
- 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)
目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ...
- leetcode刷题3.无重复字符的最长子串
题目:给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. ...
随机推荐
- linux 基础(6)简单认识 bash
shell 和 bash 是什么? shell 是一种应用程序,在这个程序里输入文字指令,系统就会做出响应的操作.这个"壳程序"是我们使用系统各种功能的接口,学会了 shell 就 ...
- 【ccc】为了ds的ccc
补一下之前的笔记: 今日:str!!~~~ 然后还有gets 和 puts 和一些基础的东西 strlen:统计字符串长度 strcpy:将某个字符串赋值到字符数组中 strcat:拼接字符 ...
- P28_全局配置 - 常用的全局配置项以及小程序窗口的组成部分
全局配置文件及常用的配置项 pages 记录当前小程序所有页面的存放路径 window 全局设置小程序窗口的外观 tabBar 设置小程序底部的 tabBar 效果 style 是否启用新版的组件样式 ...
- 视觉SLAM:滑动窗口
1.SLAM问题 1.1建模 考虑某个状态 \(\xi\),以及一次与该变量相关的观测 \(r_{i}\).由于噪声存在,观测服从概率分布 \(p(r_{i}|\xi)\).多个观测时,各个测量值相互 ...
- ES6的新特性有哪些
1.let.const 2.模板字符串 3.箭头函数 4.解构赋值 5.promise 6.数组的新方法 7.对象的新方法 8.class类 9.新增Set.Map两种数据结构 10.proxy
- Commons-Collections反序列化
Java反序列化漏洞 Commons Collections Apache Commons 是 Apache 软件基金会的项目.Commons Collections 包为 Java 标准的 Coll ...
- Vue3 ref 模板引用获取不到节点
ref模板引用必须要在组件实例挂载完成之后才可以访问.如果你是在组合式 API 里面写的组件,那么 setup 函数比任何周期函数都早,所以不可能在该函数中执行时获取得到ref--组件实例. 官网关于 ...
- PostGIS之空间索引
1. 概述 PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询 PostGIS官网:About PostGIS | PostGIS ...
- PYTHON编写程序练习-打印99乘法表
使用for循环嵌套的知识点编写 for i in range(1,10): #第一层循环,循环乘数 for j in range(1,i+1): #第二层循环,循环被乘数 print(f&qu ...
- pat乙级1023 组个最小数
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> ...