我正在努力解决以下问题,我的代码是否正确以及如何测试它是否有效?
任务:将字符串作为单个输入参数。您可以假设该字符串由不同的小写字母组成(按字母顺序排列)。您可以假设输入是按字母顺序排列的字母串。
返回一个字符串列表,其中每个字符串代表输入字符串的排列。排列列表必须按字典顺序排列。(这基本上是字典使用的顺序。按第一个字母排序(按字母顺序排列),如果平局,则使用第二个字母等。
[我的代码]
def perm_gen_lex(in_string):
if (len(in_string) <= 1):
return(in_string)
# List of all new combinations
empty_list = []
# All permutations
final_perm = perm_gen_lex(in_string[1:])
# Character to be removed
remove_char = in_string(0)
# Remaining part of string
remaining_string = in_string[1:]
for perm in final_perm[1:]:
for i in range(len(in_string) + 1):
return empty_list.append(perm[:i] + remove_char + perm[i:])
return empty_list
答案 0 :(得分:-1)
这方面的一些变化会让你感动:
from itertools import product
def combinations(string):
return [''.join(i) for i in product(string, repeat = len(string))]
print(combinations("abc"))
请参阅https://docs.python.org/3/library/itertools.html#itertools.product