python - 需要减少此函数中的递归调用次数
问题描述
问题是给定一个字符串 S 和一个整数 k<len(S),我们需要在字典顺序中找到最高的字符串,删除任何 k 个字符,但保持字符串的相对顺序。
这是我到目前为止所拥有的:
def allPossibleCombinations(k,s,strings):
if k == 0:
strings.append(s)
return strings
for i in range(len(s)):
new_str = s[:i]+s[i+1:]
strings = allPossibleCombinations(k-1, new_str, strings)
return strings
def stringReduction(k, s):
strings = []
combs = allPossibleCombinations(k,s, strings)
return sorted(combs)[-1]
这适用于一些测试用例,但它说我对其他测试用例有太多递归调用。我不知道测试用例。
解决方案
这应该让你开始 -
from itertools import combinations
def all_possible_combinations(k = 0, s = ""):
yield from combinations(s, len(s) - k)
现在,对于给定的k=2
, 和s="abcde"
,我们显示所有删除字符s
的组合 -k
for c in all_possible_combinations(2, "abcde"):
print("".join(c))
# abc
# abd
# abe
# acd
# ace
# ade
# bcd
# bce
# bde
# cde
推荐阅读
- python - Python程序打印不采用第一个测试用例的字符串的奇数和偶数索引
- c++ - 创建复制文件/目录但排除某些项目的 CMake 目标
- javascript - Mapbox 地图未加载且未响应
- amazon-web-services - 从 aws lambda 触发 Gitlab-ci
- c# - c#插入数据库数据类型不匹配错误
- payment - 万事达卡托管结帐集成
- c# - 如何选择项目 MVVM listview - Xamarin 表单
- text - 如何在网页上修复正方形而不是文本(表情符号)
- r - 如何使用 Ranger 按类别获取特征重要性?
- python - 处理 Nonetype 以设置路径