python下實現字串的排列和組合

2021-08-07 11:08:41 字數 1296 閱讀 4427

str_input = 'ab'

str_set =

defpermu

(str = 'abc'):

for i in str:

str_tem = str.replace(i, '')

if len(str_tem) > 0:

permu(str_tem)

else:

print(''.join(str_set))

str_set.pop()

permu(str_input)

使用這種方法的思想是: 對於乙個字串中的元素, 考慮他和除了他之外的其他所有的元素.

重要的地方在於pop這個操作, 在每次加入進去新的元素之後,最後都要把這個元素再重新刪除掉.

## 組合:

對乙個字串進行組合,考慮最極端的情況是:針對字串中的每乙個字元都沒有選入到我們的組合當中去:

str_input = 'abc'

result_set =

str_set =

defpermu

(str='abc'):

i = str[0]

str_tem = str.replace(i, '')

#第乙個值沒有被選中

if len(str_tem) > 0:

permu(str_tem)

else:

#print(''.join(str_set))

result_set.add(''.join(str_set))

#第乙個值被選中了

if len(str_tem) > 0:

permu(str_tem)

else:

#print(''.join(str_set))

result_set.add(''.join(str_set))

str_set.pop()

permu(str_input)

print(result_set)

tem = sorted(result_set)

tem_1 = sorted(tem, key=len)

print(tem_1)

針對每乙個字元,都考慮兩種情況,首先是,這個字元被選進整個組合當中,然後在考慮沒有被選入到整個組合當中.

同樣, 重點是在選進到組合當中之後,我們要將其pop彈出

同時,由於組合不需要進行反覆的遍歷,僅僅需要從前到後掃瞄一遍即可.所以在實際操作中,針對的都是第0個元素盡心判斷.

python 字串的排列

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

字串的排列 C 實現

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則按字典序列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。牛客網題目鏈結 需要兩步即可解決問題 using ...

字串的所有排列 python

在給定乙個字串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是pe...