当前位置:网站首页>小黑leetcode之旅:95. 至少有 K 个重复字符的最长子串
小黑leetcode之旅:95. 至少有 K 个重复字符的最长子串
2022-08-04 23:13:00 【小黑无敌】
小黑java解法1:分治法
class Solution {
public int longestSubstring(String s, int k) {
return dfs(s, 0, s.length() - 1, k);
}
public int dfs(String s, int left, int right, int k) {
if (left > right) {
return 0;
}
int[] cnt = new int[26];
for (int i = left; i <= right; i++) {
cnt[s.charAt(i) - 'a']++;
}
int res = 0;
int start = left;
boolean flag = false;
System.out.println(left+"+"+right);
for(int i = left; i <= right; i++) {
if (cnt[s.charAt(i) - 'a'] < k) {
System.out.println(i);
int p = dfs(s, start, i-1, k);
if(p > res){
res = p;
}
flag = true;
start = i + 1;
}
}
if(flag){
int p = dfs(s, start, right, k);
if(p > res){
res = p;
}
return res;
}
return right - left + 1;
}
}

小黑python解法1:分治法
class Solution:
def longestSubstring(self, s: str, k: int) -> int:
l = len(s)
def substring(s,start,end):
counts = {
}
for c in s[start:end+1]:
counts[c] = counts.get(c,0) + 1
# 生成分割点
splits = []
for key in counts:
if counts[key] < k:
splits.append(key)
if not splits:
return end - start + 1
i = start
res = 0
while i <= end:
while i <= end and s[i] in splits:
i += 1
if i > end:
break
start = i
while i <= end and s[i] not in splits:
i += 1
length = substring(s,start,i-1)
res = max(length,res)
return res
return substring(s,0,l-1)

分治法
class Solution:
def longestSubstring(self, s: str, k: int) -> int:
l = len(s)
def subString(start,end):
counts = {
}
# 记录子串中每一个字符的频率
for c in s[start:end+1]:
counts[c] = counts.get(c,0) + 1
# 筛选出频率小于k的一个字符
split = None
for c in counts.keys():
if counts[c] < k:
split = c
break
# 所有字符符合要求,则return
if not split:
return end - start + 1
i = start
ans = 0
while start <= end:
while i <= end and s[i] == split:
i += 1
if i > end:
break
start = i
while i <= end and s[i] != split:
i += 1
ans = max(ans,subString(start,i-1))
return ans
return subString(0,l-1)

边栏推荐
- 【3D建模制作技巧分享】在zbrush中如何雕刻头发 ZBrush头发雕刻小技巧
- 亿流量大考(3):不加机器,如何抗住每天百亿级高并发流量?
- kernel问题定位手段总结
- typeScript-promise
- kernel hung_task死锁检测机制原理实现
- PID控制器改进笔记之七:改进PID控制器之防超调设定
- ffplay视频播放原理分析
- 特征工程资料汇总
- SQL Server calls WebService
- The market value of 360 has evaporated by 390 billion in four years. Can government and enterprise security save lives?
猜你喜欢

Pytest学习-Fixture

Will we still need browsers in the future?(feat. Maple words Maple language)

未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落

Reconfigure the ffmpeg plugin in chrome

MySQL基础篇【子查询】

Implementing class target method exception using proxy object execution

【3D建模制作技巧分享】ZBrush纹理贴图怎么导入

文献阅读十——Detect Rumors on Twitter by Promoting Information Campaigns with Generative Adversarial Learn

【游戏建模模型制作全流程】ZBrush蜥蜴模型雕刻教程

360市值四年蒸发3900亿,政企安全能救命吗?
随机推荐
自从新来了个字节20K出来的,就见识到了什么是天花板
truffle
Go 编程语言(简介)
JVM memory configuration parameter GC log
线性DP(下)
直接插入排序
【无标题】
[Paper Notes KDD2021] MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
360市值四年蒸发3900亿,政企安全能救命吗?
Since a new byte of 20K came out, I have seen what the ceiling is
年薪50W+的测试工程师都在用这个:Jmeter 脚本开发之——扩展函数
SQL Server calls WebService
【3D建模制作技巧分享】ZBrush如何使用Z球
吐槽 | 参加IT培训的正确姿势
Nacos配置中心之客户端长轮询
【项目实战】仿照Room实现简单管理系统
PID控制器改进笔记之七:改进PID控制器之防超调设定
Acwing3593. 统计单词
赶紧进来!!!教你C语言实现扫雷小游戏(文章最后有源码!!!)
【字符串函数内功修炼】strncpy + strncat + strncmp(二)