字串的所有排列 python

2021-10-04 05:43:59 字數 1120 閱讀 7082

在給定乙個字串abc,輸出該字串的所有排列組合 abc acb bac bca cab cba

# 遞迴法

class solution:

def permutation(self, ss):

if len(ss) <= 1:

return ss

res = set()

for i in range(len(ss)):

# 每乙個j是permutation(ss[:i]+ss[i+1:])這個list中不同排列組合的乙個strin

# 每次迭代得獲得乙個字元,最終獲得是所有的排列結果

for j in self.permutation(ss[:i]+ss[i+1:]):

res.add(ss[i]+j)

return sorted(res)

class solution:

def permutation(self, ss):

if len(ss) <= 1:

return ss

res=set()

tmp=

# 用乙個dict記住每個單詞出現次數

counter = {}

for s in ss:

if s in counter:

counter[s] = 1

else:

counter[s] += 1

self.back(res,tmp,ss,n_dict)

return sorted(list(res))

def back(self,res,tmp,ss,counter):

if len(tmp) == len(ss):

print(tmp)

print(len(ss))

res.add(''.join(tmp))

else:

for i in ss:

if counter[i] == 0:

continue

# 用一次就減一,回溯時記得加回來

counter[i] -= 1

self.back(res,tmp,ss,counter)

counter[i] += 1

tmp.pop()

字串的所有排列

輸入乙個字串,列印出該字串的所有排列,例如輸入字串abc 則列印出a,b,c 所能排列出來的所有字串 abc,acd,bac,bca,cab,cba。看似簡單,其實不是很好做,應該把問題分解為子問題,我們把字串看成兩個部分,首字母自己作為一部分,後面的其他節點當做其它部分。可以看成兩部走 求出所有課...

列印字串的所有排列

輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素。示例 輸入 s abc 輸出 abc acb bac bca cab cba 限制 1 s 的長度 8 public static string permutation string s return...

python 字串的排列

給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。輸入 s1 ab s2 eidbaooo 輸出 true 解釋 s2 包含 s1 的排列之一 ba 輸入 s1 ab s2 eidboaoo 輸出 false 注意 輸入的...