首页 > 解决方案 > 生成字符串排列列表的问题

问题描述

我想使用回溯算法生成字符串的所有排列的列表。

我修改了上一篇文章中的一些代码:https ://stackoverflow.com/a/20955291/12021192

def permutations(string, step = 0):

    permTrack = []

    if step == len(string):
        permTrack.append(''.join(string))

    for i in range(step, len(string)):
        string_copy = list(string)
        string_copy[step], string_copy[i] = string_copy[i], string_copy[step]
        permutations(string_copy, step + 1)

    return permTrack

permTrack = permutations('ABC')

我预期permTrack = ['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA],但实际输出是permTrack = [ ]

这个想法是在基本情况下附加到列表 permTrack,当 step == len(string) 时。例如,这适用于打印排列的原始代码。

有人可以帮我解决这个问题吗?

标签: python

解决方案


permutations当它被递归调用时,您不会对返回的内容做任何事情。

如果您添加返回的内容permTrack,您应该得到您想要的。


推荐阅读