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编辑。
我一直在研究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编辑。