【发布时间】:2021-07-11 20:53:37
【问题描述】:
我一直在研究leetCode,遇到了这个问题:给定一个字符串s和一个整数k,返回s的最长子串的长度,使得这个子串中每个字符出现的频率大于等于k .
到目前为止最优雅的解决方案如下,但我不明白
A:它想做什么
for t in s.split(c)
首先通过一组字符串版本
然后,取原来的s(NON-set,或者列出s有重复),把频率小于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)
【问题讨论】:
标签: python recursion divide-and-conquer