当前位置:网站首页>Xiaohei's leetcode journey: 95. Longest substring with at least K repeating characters
Xiaohei's leetcode journey: 95. Longest substring with at least K repeating characters
2022-08-04 23:20:00 【little black invincible】
小黑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 = {
}
# Record the frequency of each character in the substring
for c in s[start:end+1]:
counts[c] = counts.get(c,0) + 1
# Filter out frequencies less thank的一个字符
split = None
for c in counts.keys():
if counts[c] < k:
split = c
break
# All characters meet the requirements,则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)

边栏推荐
- 4-《PyTorch深度学习实践》-反向传播
- VMware NSX 4.0 -- 网络安全虚拟化平台
- 测试技术:关于上下文驱动测试的总结
- Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
- 软件测试技术之如何编写测试用例(4)
- 基于Appian低代码平台开发一个SpaceX网站
- Nuclei (2) Advanced - In-depth understanding of workflows, Matchers and Extractors
- ClickHouse 二级索引
- 一点点读懂regulator(四)
- Implementing class target method exception using proxy object execution
猜你喜欢

使用代理对象执行实现类目标方法异常
![[Paper Notes KDD2021] MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems](/img/21/594260a3b98c73916ebc535d0f81e4.png)
[Paper Notes KDD2021] MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems

仪表板展示 | DataEase看中国:数据呈现中国资本市场

直接插入排序
![[Cultivation of internal skills of string functions] strcpy + strcat + strcmp (1)](/img/b6/5a1c8b675dc7f67f359c25908403e1.png)
[Cultivation of internal skills of string functions] strcpy + strcat + strcmp (1)

go语言的日志实现(打印日志、日志写入文件、日志切割)

应用联合、体系化推进。集团型化工企业数字化转型路径

一点点读懂cpufreq(一)

uniapp动态实现滑动导航效果demo(整理)

【3D建模制作技巧分享】ZBrush模型如何添加不同材质
随机推荐
Controller层代码这么写,简洁又优雅!
现在学习次世代3D游戏建模还能找到高薪好工作吗
[Cultivation of internal skills of memory operation functions] memcpy + memmove + memcmp + memset (4)
Go 语言快速入门指南:什么是 TSL 安全传输层
365天深度学习训练营-学习线路
2022/8/3
uniapp 分享功能-分享给朋友群聊朋友圈效果(整理)
OPENCV学习DAY8
功耗控制之DVFS介绍
@Async注解的作用以及如何实现异步监听机制
C语言实现扫雷 附带源代码
Uniapp dynamic sliding navigation effect demo (finishing)
使用代理对象执行实现类目标方法异常
基于深度学习的路面坑洞检测(详细教程)
零基础如何入门软件测试?再到测开(小编心得)
【SSR服务端渲染+CSR客户端渲染+post请求+get请求+总结】
uniapp动态实现滑动导航效果demo(整理)
kernel hung_task死锁检测机制原理实现
MySQL基础篇【聚合函数】
年薪50W+的测试工程师都在用这个:Jmeter 脚本开发之——扩展函数