递归-leetcode-python
发布时间
阅读量:
阅读量
至少有K个重复字符的最长子串
识别一个由小写字母构成的字符串中所含的最大子串 T ,该子串需满足其中每个字符出现次数至少为 k 次的要求,并计算并输出满足条件的子串 T 的长度。
示例 1:
输入:
s = “aaabb”, k = 3
输出:
3
最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。
示例 2:
输入:
s = “ababbc”, k = 2
输出:
5
最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。
解法
观察题目发现它可能适合使用动态规划的方法来解决。然而,直接使用动态规划可能会遇到一些挑战或困难。因此转而采用递归的方法来处理这一问题更为合适。
首先评估字符串的长度是否满足条件:如果字符串长度小于k,则返回0作为结果值。否则继续下一步操作:对字符串中的每一个字符依次检查其出现频率情况:如果某个字符在当前子串中的出现次数少于k次,则对该子串中不包含该字符的部分进行进一步分析和判断;最终综合各部分符合条件的最大值即可得到结果值。
这段代码呈现出很强的Python特性,并且在实现上非常简洁高效。
class Solution(object):
def longestSubstring(self, s, k):
"""
全部评论 (0)
还没有任何评论哟~
