在給定乙個字串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 注意 輸入的...