递归混合两个字符串

时间:2016-11-20 09:05:14

标签: python python-3.x

我有这个字符串:" case"和" ro"。我需要得到它们之间的所有组合,我将第二个字符串中的单个字母替换为第一个字母,但前提是字母大于另一个字母。例如:在"玫瑰:r> c,o> a。其他例子有:" cose"," roso"," coso" 我尝试使用迭代编写一些东西,但是它会进行无限循环并且不会产生任何结果。如果有人可以帮我找出一种更简单的方法,那就太好了。

1 个答案:

答案 0 :(得分:0)

我根据我从问题中理解的内容回答。请检查以下答案是否正确。如果是,那么我可以稍后解释一下。

def solve( s1, s2):  # prints all combinations of s1 from letters of s2 in a list
            ans = [s1]   
            if s1=="":
                return ans
            tmp = solve( s1[1:],s2 )  
            ans += [ s1[0]+x for x in tmp ]
            for c in s2:
                if c>s1[0]:
                    ans += [ c+x for x in tmp ]
            return list(set(ans))

print solve("case","ro")