用 Python 编写程序,查找字符数至少为 k 的最长子字符串的长度
pythonserver side programmingprogramming
假设我们有一个字符串 s,其中每个字符都已排序,并且我们还有一个数字 k,我们必须找到最长子字符串的长度,使得每个字符至少出现 k 次。
因此,如果输入为 s = "aabccddeeffghij" k = 2,则输出将为 8,因为此处最长子字符串为 "ccddeeff" 此处每个字符至少出现 2 次。
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数 rc() 。这将采用 lst
- c := 包含所有字符及其出现次数的映射
- acc := 一个新列表
- ans := 0
- valid := True
- 对于 lst 中的每个 x,执行
- 如果 c[x] < k,则
- valid := False
- ans := ans 和 rc(acc) 的最大值
- acc := 一个新的列表
- 否则,
- 在 acc 末尾插入 x
- 如果 c[x] < k,则
- 如果 valid 为真,则
- 返回 acc 的大小
- 否则,
- ans := ans 和 rc(acc) 的最大值
- 返回 ans
- 从 main 方法中,执行以下操作 −
- 返回 rc(通过转换 s 的每个字符来生成一个新的列表)
让我们看看下面的实现以便更好地理解 −
示例
from collections import Counter class 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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

