如何求弦的排列?python

2024-10-03 02:34:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个字符串:"AAABBB"和这个字符串"--"。在

如何在递归中找到合并字符串"--AAABBB"的所有排列?在

但是"AAABBB"必须按她的命令来做。例如:

--AAABBB 
-A-AABBB 
-AA-ABBB 
. 
.. 
. 
.AAABBB-- 

Tags: 字符串命令aaaaabbbabbbaabbb
2条回答

以下是递归生成器实现:

def comb(first_str, second_str):
    if not first_str:
        yield second_str
        return
    if not second_str:
        yield first_str
        return

    for result in comb(first_str[1:], second_str):
        yield first_str[0] + result
    for result in comb(first_str, second_str[1:]):
        yield second_str[0] + result

带字符串的输出:

^{pr2}$
from itertools import combinations

def dashed_comb(base_str, exp_len):
    for comb in combinations(range(exp_len), exp_len-len(base_str)):
        letters = iter(base_str)
        yield ''.join('-' if x in comb else letters.next()
                               for x in xrange(exp_len))

递归的(此处提供,因为它比基于itertools的速度快两倍):

^{pr2}$

样本输出:

>>> for dc in dashed_comb('AAB', 5):
...     print dc
...
...
 AAB
-A-AB
-AA-B
-AAB-
A AB
A-A-B
A-AB-
AA B
AA-B-
AAB 

相关问题 更多 >