我很抱歉已經有很多關於這個問題的文章。但是,我很難在自己的實施中看到自己的錯誤。所以我試圖編寫一個函數,它接受一個字符串並以列表的形式返回所有可能的排列。在Python中遞歸地實現排列
理論上應該是這樣的:
allPermutations( 「ABC ... Z」)= [A + allPermutations(B,C,... Z),B + allPermutations(A,C .. .z)...]
我在當前的實現中,當在字符串「Hello」上測試時,會輸出一堆重複的排列。任何人都可以幫我看看我哪裏出錯了。感謝您的協助!
這裏是代碼:
def allPermutations(strng):
if len(strng) ==1:
return [strng]
perm_list = []
for i in strng:
smallerStr = strng.replace(i,"",1)
z = allPermutations(smallerStr)
for t in z:
perm_list.append(i+t)
return perm_list
我不確定你是否只是想練習,但如果你不是,itertools有一個方便的排列功能。例如, – James
,「你好」有2個「l」。因此,它會有雙重排列。 – Drakosha