当前位置:网站首页>小黑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)
边栏推荐
猜你喜欢
使用OpenCV实现一个文档自动扫描仪
养殖虚拟仿真软件提供高沉浸式的虚拟场景互动操作体验学习
应用联合、体系化推进。集团型化工企业数字化转型路径
一点点读懂thermal(一)
一点点读懂Thremal(二)
一点点读懂cpufreq(一)
未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落
Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
The market value of 360 has evaporated by 390 billion in four years. Can government and enterprise security save lives?
web3.js
随机推荐
逆序对的数量
中国的顶级黑客在国际上是一个什么样的水平?
年薪50W+的测试工程师都在用这个:Jmeter 脚本开发之——扩展函数
【3D建模制作技巧分享】Maya模型如何导入zbrush
Shell expect real cases
【3D建模制作技巧分享】ZBrush如何使用Z球
质量管理大师爱德华·戴明博士经典的质量管理14条原则
一点点读懂thermal(一)
未上市就“一举成名”,空间媲美途昂,安全、舒适一个不落
360市值四年蒸发3900亿,政企安全能救命吗?
【3D建模制作技巧分享】ZBrush模型如何添加不同材质
Linear DP (bottom)
基于内容的图像检索系统设计与实现--颜色信息--纹理信息--形状信息--PHASH--SHFT特征点的综合检测项目,包含简易版与完整版的源码及数据!
MYS-6ULX-IOT 开发板测评——使用 Yocto 添加软件包
VC bmp文件总结
[Cultivation of internal skills of string functions] strcpy + strcat + strcmp (1)
go语言的time包介绍
亿流量大考(3):不加机器,如何抗住每天百亿级高并发流量?
MySQL的JSON 数据类型2
CS8416国产替代DP8416 数字音频接收器