leetcode每日一题之3.至少有 K 个重复字符的最长子串
至少有 K 个重复字符的最长子串
递归的方式
对于这个字符串来说,如果某个字符(比如t)的数量小于k的话,那么满足要求的一定在用t分割的字符串的所有字串中。运用这种思想,可以使用递归的方法来求解。代码如下
class Solution {
/**
* @param String $s
* @param Integer $k
* @return Integer
*/
function longestSubstring($s, $k) {
$length = strlen($s);
// 如果字符串的长度小于$k,则必然没有
if($length < $k) return 0;
// 统计所有字符出现的数量
$cnts = [];
for($i = 0; $i < $length; $i++){
$cnts[$s[$i]] = isset($cnts[$s[$i]]) ? $cnts[$s[$i]] + 1 : 1;
}
// 循环字符,如果有字符的数量小于$k,则分割字符串,求所有字串中的最大的数量
foreach($cnts as $key => $cnt){
if($cnt < $k){
$max = 0;
$splits = explode($key, $s);
foreach($splits as $split){
$max = max($max, $this->longestSubstring($split, $k));
}
return $max;
}
}
return $length;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现