Advertisement

递归-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)

还没有任何评论哟~