python - 最长子串python解决方案是什么意思--> for t in s.split(c)
问题描述
我一直在研究leetCode,遇到了这个问题:给定一个字符串s和一个整数k,返回s的最长子串的长度,使得这个子串中每个字符出现的频率大于等于k。
到目前为止最优雅的解决方案如下,但我不明白
A:它想做什么
for t in s.split(c)
首先通过一组版本的字符串进行
然后,取原始s
(非集合,或s
重复列表),将s
频率小于的字符拆分到哪里k
?然后一次取一个子字符串?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)
将返回2
,因为没有一个字符的频率小于 2。
longestSubstring('aaaacdmmmmmm', 2)
将进行更多递归,最终返回,6
因为这是mmmmmm
.
max(2, 6)
6
return ,由函数返回。
推荐阅读
- jquery - 当我在 DIV 中添加滚动时,JQuery Sortable 不起作用
- java - 从片段中的数组设置 TextView
- python - 在python(Scipy)中的大型二维矩阵中查找模式的有效方法
- c# - 使用 ajax 和 webmethod 在 asp.net 中使用 web 方法和 ajax 级联下拉列表绑定下拉数据
- android - 如何使用 JNI、NDK 导入开源库
- html - 需要动态调整的css形状
- angular - Angular 组件包装器弄乱了 Bulma 样式
- sql - 如何通过比较sql server中的两个表数据来更新表
- angular - 在 JSON Angular 5 中读取 Excel 文件和存储
- javascript - 如何在 IONIC 3 中将多个输入字段作为 JSON 对象发布到服务器