longestSubstring python 解是什么意思 --> for t in s.split(c)

longestSubstring python solution what does it mean --> for t in s.split(c)

我一直在研究leetCode,我运行遇到了这个问题:给定一个字符串s和一个整数k,return求s的最长子串的长度使得每个字符出现的频率此子串中大于或等于 k.

到目前为止最优雅的解决方案如下,但我不明白

答:它想做什么

for t in s.split(c) 

首先遍历一组版本的字符串

然后,取原来的s(NON-set,或者list s with duplicates),在出现频率小于k的字符处拆分s ?然后一次取一个子串?所以如果 s="aabaaaacdmmmmmm", k=2

我们首先在 "b" 上拆分然后计算 aa 然后在 "c" 上拆分并得到 aabaaaa 不确定我们得到的最大值

def longestSubstring(s, k):
    for c in set(s):
        if s.count(c) < k:
            return max(longestSubstring(t, k) for t in s.split(c))
    return len(s)

如果c == 'b's.split(c)将输入拆分为

['aa', 'aaaacdmmmmmm']

然后它递归地调用自己来获取其中每一个中最长子串的长度。

longestSubstring('aa', 2) 将 return 2 因为 none 个字符的频率小于 2.

longestSubstring('aaaacdmmmmmm', 2) 会做更多的递归,最终 returning 6 因为那是 mmmmmm.

的长度

max(2, 6) returns 6,由函数return编辑。