字串全排列的輸出(遞迴解法)

2022-07-11 05:03:09 字數 737 閱讀 7293

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

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

"ab"

["ab","ba"]

題目如上,其實這是一道水題,但是好像做題的時候思路不對上就容易走火入魔,原本打算用dp做出來。。奈何不太熟不知道從何dp,於是看了下官方題解,把這個思路記錄下來。

在原始字串上進行操作的話,就不用擔心漏了字元和字元重複什麼的問題,用set暫存結果可以過濾多餘的字串結果。

思路大致這樣,對目標string每兩個字元進行一次換位,中間遞迴其他字元的交換,同時在得到一次結果之後回溯,因為換位之後其他分支的結果需要原來的字串嘛,這樣才能保證

結果比較全面,接下來是附帶註解的**。

class

solution ;//字串為空直接返回空結果

setst;//字典可以過濾多餘結果

change(

0,str,st);

return vector();//型別轉換

}void change(int position,string s,set

&st)

}};

又水了乙份題解。

遞迴 字串全排列 全排列

在高中階段我們已經通過大量的習題了解了排列和組合。但是有時候我們研究的不是由排列和組合算出來的數字,研究的是生成排列和組合。即,把集合中元素所有的排列和組合全部列出來,然後研究這些序列的性質。今天我用兩種方法講一下如何生成排列。注意我們這裡涉及的順序都是序列的字典序。序列的字典序 設有兩個序列,第乙...

字串全排列演算法 遞迴

以字串1234為例 1 一 234 2 一 134 3 一 214 4 一 231 如何才能保證不遺漏呢 如下 includeusing namespace std char str 1234 int size sizeof str sizeof char str 要進行全排列的字元陣列 size ...

字串全排列的遞迴實現

include stdafx.h include include using namespace std void permutation char pstr,char pbegin int main 這是在源字串上的操作,因此,swap之後還需要再次swap回來以恢復。最終結果是分組的 以a開頭,...