至少有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"
相关推荐
Jerry11 小时前
LeetCode 28. 找出字符串中第一个匹配项的下标
算法
Jerry13 小时前
LeetCode 459. 重复的子字符串
算法
海石15 小时前
1500分的题目,确实有实力,不过还是我略胜一筹
算法·leetcode
海石15 小时前
【记忆化搜索】条条大路通AC,走好适合你的那一条,走到后再考虑走得快
算法·leetcode
Jerry17 小时前
LeetCode 151. 反转字符串中的单词
算法
咖啡星人k19 小时前
从Vibe Coding到Prompt Engineering:AI编程的新技能树
面试·职场和发展·ai编程
a11177620 小时前
LM 算法迭代过程动画演示(SLAM)
算法
头茬韭菜20 小时前
Context 的生死抉择:四层压缩、截断算法与 Session Memory
算法·ai
Jerry20 小时前
LeetCode 541. 反转字符串 II
算法
Jerry20 小时前
LeetCode 344. 反转字符串
算法