至少有k个重复字符的最长子串(LeetCode)

题目

给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。

如果不存在这样的子字符串,则返回 0。

解题

python 复制代码
def longestSubstring(s, k):
    # 如果字符串长度为0或者字符串长度小于k,返回0
    if len(s) == 0 or len(s) < k:
        return 0

    # 如果字符串中所有字符的出现次数都大于等于k,返回字符串的长度
    if all(s.count(char) >= k for char in set(s)):
        return len(s)

    # 否则进行分治
    for char in set(s):
        if s.count(char) < k:
            # 对字符串进行分割
            return max(longestSubstring(sub, k) for sub in s.split(char))

    return len(s)


# 示例
s = "aaabb"
k = 3
print(longestSubstring(s, k))  # 输出: 3, 因为最长子串是 "aaa"

s = "ababbc"
k = 2
print(longestSubstring(s, k))  # 输出: 5, 因为最长子串是 "ababb"
相关推荐
bxlj_jcj13 分钟前
分布式ID方案、雪花算法与时钟回拨问题
分布式·算法
程序员三藏14 分钟前
Web自动化测试:数据驱动实战
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
墨染点香14 分钟前
LeetCode 刷题【179. 最大数】
算法·leetcode·职场和发展
失忆已成习惯.18 分钟前
西农数据结构第四次实习题目参考
数据结构·算法·图论
kyle~18 分钟前
排序---堆排序(Heap Sort)
数据结构·c++·算法
yesyesido25 分钟前
3D在线魔方模拟器
科技·算法·3d·生活·业界资讯·交友·帅哥
是苏浙29 分钟前
蓝桥杯备战day1
算法
汉克老师30 分钟前
CCF-NOI2025第一试题目与解析(第二题、序列变换(sequence))
c++·算法·动态规划·noi
断剑zou天涯30 分钟前
【算法笔记】KMP算法
java·笔记·算法
程序员东岸32 分钟前
《数据结构——排序(下)》分治与超越:快排、归并与计数排序的终极对决
数据结构·c++·经验分享·笔记·学习·算法·排序算法