我尝试创建一个给定字符串的所有子集递归.给定string = 'aab',我们为不同的字符生成所有子集.答案是:["", "b", "a", "ab", "ba", "a", "ab", "ba", "aa", "aa", "aab", "aab", "aba", "aba", "baa", "baa"]
。我一直在寻找一些解决方案,如this one,但我试图使函数接受一个单一的变量-只有字符串和工作,但不能弄清楚如何。我也一直在寻找类似问题的this解决方案,但是因为它处理的是列表而不是字符串,所以我在转换它以接受和生成字符串时遇到了一些麻烦。2这是我的代码,在这个例子中,我无法将字符串连接到列表,因此我提出了这个问题。我编辑了输入和输出。
def gen_all_strings(word):
if len(word) == 0:
return ''
rest = gen_all_strings(word[1:])
return rest + [[ + word[0]] + dummy for dummy in rest]
3条答案
按热度按时间00jrzges1#
输出:
第一个月
['', 'a', 'b', 'c', 'aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc', 'aaa', 'aab', 'aac', 'aba', 'abb', 'abc', 'aca', 'acb', 'acc', 'baa', 'bab', 'bac', 'bba', 'bbb', 'bbc', 'bca', 'bcb', 'bcc', 'caa', 'cab', 'cac', 'cba', 'cbb', 'cbc', 'cca', 'ccb', 'ccc']
老实说,在这种情况下使用递归感觉真的很勉强,一个简单得多的版本也有相同的结果:
ncgqoxb02#
这是字符串中字符集的powerset。
ss2ws0br3#