程序在Python中查找字符数至少为k的最长子字符串的长度
假设我们有一个字符串s,其中每个字符都进行了排序,并且我们还有一个数字k,我们必须找到最长子字符串的长度,以便每个字符至少出现k次。
因此,如果输入类似于s =“ aabccddeeffghij” k = 2,则输出将为8,因为此处最长的子字符串为“ ccddeeff”,此处每个字符至少出现2次。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能
rc()
。这将需要第一c:=包含所有字符及其出现的映射
acc:=一个新列表
回答:= 0
有效:=真
对于第一个x,
在acc的末尾插入x
有效:=假
ans:= ans和rc(acc)的最大值
acc:=一个新列表
如果c [x] <k,则
除此以外,
如果有效,则为
acc的返回大小
除此以外,
ans:= ans和rc(acc)的最大值
返回ans
从主要方法中,执行以下操作-
返回rc(通过转换s的每个字符的新列表)
让我们看下面的实现以更好地理解-
示例
from collections import Counterclass Solution:
def solve(self, s, k):
def rc(lst):
c = Counter(lst)
acc = []
ans = 0
valid = True
for x in lst:
if c[x] < k:
valid = False
ans = max(ans, rc(acc))
acc = []
else:
acc.append(x)
if valid:
return len(acc)
else:
ans = max(ans, rc(acc))
return ans
return rc(list(s))
ob = Solution()s = "aabccddeeffghij"
k = 2
print(ob.solve(s, k))
输入值
"aabccddeeffghij", 2
输出结果
8
以上是 程序在Python中查找字符数至少为k的最长子字符串的长度 的全部内容, 来源链接: utcz.com/z/347127.html