劍指Offer 字串的排列

2022-03-22 06:45:16 字數 791 閱讀 1630

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。

輸入描述:

輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。

很多人使用python的permutation庫去做,那麼還有什麼意義呢?

要做字串的全排列。做法是把對字串中的每個元素都當做起始位置,把其他元素當做以後的位置,然後再同樣的進行操作。這樣就會得到全排列

# -*- coding:utf-8 -*-

class solution:

def permutation(self, ss):

if len(ss) <=0:

return

res = list()

self.perm(ss,res,'')

uniq = list(set(res))

return sorted(uniq)

def perm(self,ss,res,path):

if ss=='':

else:

for i in range(len(ss)):

self.perm(ss[:i]+ss[i+1:],res,path+ss[i])

print(solution().permutation('abc'))

這個題不使用index的原因是,我們認為已經遍歷過了的元素過濾掉了,只留下了未遍歷的剩餘的字串當做ss。因此,所有的元素遍歷完成了,ss也就是空了,就可以結束了。

劍指Offer 字串排列

題目描述 輸入乙個字串,列印出該字串中字元的所有排列。解析 step 1 求所有可能出現第乙個位置的字元。把第乙個字元與後面的每個字元交換。step 2 固定第乙個字元,將後面的字元利用遞迴進行全排列。include include using namespace std void stringpe...

劍指offer 字串的排列

題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c 所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。解題思路 深度搜尋,在每層搜尋裡設定乙個a陣列對映所有字元,每個字元在這層迴圈中只能使用一次,避免重...

劍指offer 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。分析 經典問題。記住吧。class ...