如何在Python中执行以下操作?
给出两个字符串。打印两个字符串的所有交错。 交错意味着if B在A之后,它也应该在交错字符串中的A之后。 EX- AB和CD A B C D ACBD ACDB CABD CADB CDAB
答案 0 :(得分:8)
这实际上是一个树行走问题(即,是否沿着一个字符串或另一个字符串前进的决策树)。通常,处理树行走问题的最简单方法是递归解决方案。
以下是一个例子:
def ordered_permutations(str1, str2):
perms = []
if len(str1) + len(str2) == 1:
return [str1 or str2]
if str1:
for item in ordered_permutations(str1[1:], str2):
perms.append(str1[0] + item)
if str2:
for item in ordered_permutations(str1, str2[1:]):
perms.append(str2[0] + item)
return perms
答案 1 :(得分:1)
向@Amber致敬,感谢他们认识到这个问题并给出了一个非常优雅的解决方案。
这是我的两分钱(只是打印出答案):
def interleave(L1, L2, answer=None):
if answer is None:
answer = ''
if not L1 and not L2:
print answer
else:
if L1:
a = answer + L1[0]
interleave(L1[1:], L2, a)
if L2:
ans = answer + L2[0]
interleave(L1, L2[1:], and)
>>> interleave('ab', 'cd')
abcd
acbd
acdb
cabd
cadb
cdab
希望这有帮助