[英]python all possible permutation using recursion
如何實現遞歸方式來編寫字符串的排列? 例如,如果輸入為'abc'
,我希望結果為:
[a', 'b', 'c', 'd', 'e', 'aa', 'ab', 'ac', 'ad', 'ae', 'ba',
'bb','bc', 'bd', 'be', 'ca', 'cb', 'cc', 'cd', 'ce', 'da', 'db',
'dc','dd', 'de', 'ea', 'eb', 'ec', 'ed', 'ee', 'aaa', 'aab', 'aac',
'aad','aae', 'aba', 'abb', 'abc', 'abd', 'abe', 'aca', 'acb',
'acc'....]
另外,如果結果的字符串也包含在另一個列表中,則返回該字符串。 例如'a'
和'b'
在[a,aaah,aahed,aahing,aahs,'b']
,我想顯示'a'
和'b'
。
編輯
我嘗試使用for循環,但出現MemoryError
。
def perm(l,last,result)
if len(result[-1]==len(l)):
return result
else:
for i in l:
for u in last:
last.append(u+i)
result.extend(last)
perm(l,last,result)
return result
perm(['a','b','c'],[''],[''])
生成當前長度的所有字符串,然后遞歸查找更長的字符串。
def perm(chars, prefix):
result = []
if len(prefix) < len(chars):
for char in chars:
result.append(prefix + char)
for char in chars:
result.extend(perm(chars, prefix + char))
return result
print perm(["a", "b", "c"], "")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.