【发布时间】:2013-10-17 21:02:42
【问题描述】:
我想得到长度为 k 的字符串中所有可能的字母组合。我知道这方面有很多帖子,但我有点扭曲 k 大于字符串的长度。
这是我目前所拥有的,它很简单,如果 k
string = 'ABCD'
permutations = ["".join(x) for x in itertools.permutations(string, k)]
k = 4 时的结果:
['ABCD', 'ABDC', 'ACBD', 'ACDB', 'ADBC', 'ADCB', 'BACD', 'BADC', 'BCAD', 'BCDA',
'BDAC','BDCA', 'CABD', 'CADB', 'CBAD', 'CBDA', 'CDAB', 'CDBA', 'DABC', 'DACB',
'DBAC', 'DBCA', 'DCAB', 'DCBA']
这按预期工作。但是,我想要这四个字母与 k > len(string) 的所有可能组合。
我想要的一个示例答案是:
string = 'AB'
k = 4
result = ['AAA,'ABB','AAB', 'ABA','BBB', 'BAA'.......]
提前致谢。
【问题讨论】:
-
有 4^15 个长度为 15 的字符串,由 A、B、C 和 D 组成。超过 十亿 个字符串。当然,你的电脑卡住了。 (请注意,有 15 个元素的 一万亿 个排列,这是您要求计算机计算的)
-
你应该举例说明你想看到什么输出。
-
@nneonneo:是的,这样一来,SO 可能会在尝试处理多 GB 的 HTTP POST 时被卡住,而不仅仅是发问者的计算机被卡住 ;-)
-
@Samantha:那就问吧。不要陷入 X/Y 问题的陷阱。 (如果你真的检查每一个组合,你的内存和 CPU 时间会爆炸。有很多,更简单的方法)。
-
您的示例似乎不对应。您在最后的示例中有
'AAA',但您说正确的permutations代码的输出中没有'AAAA'。