求字串的全排列(劍指offer 38)

2021-09-16 14:11:20 字數 456 閱讀 2375

輸入乙個字串,輸出這個字串的所有排列組合。比如輸入:abc,輸出:abc acb bac bca cba cab。

我們可以把乙個字串看成由兩部分組成,第一部分是它的第乙個字串,第二部分是後面的字串。我們求整個字串的排列可以看成兩步。第一步求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第二部固定第乙個字元,求後面所有字元的排列。這時候我們仍然把後面的所有字元分成兩個部分:後面字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元逐一和後面的字元交換。**如下:

#include#includeusing namespace std;

void swap(char* str1, char* str2)

//求乙個字串的全排列

void permutation(char* str,char* begin)

}}

劍指offer 字串全排列

題目 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。思路 元素排列是遞迴問題,在某個位置上選擇哪個元素就對應著該位置上的元素與其他元素相交換 不要忘了與自己交換的情況 所以按照排列...

劍指offer 字串的全排列

題目描述 輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入描述 輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。注意有可能重複,因此需要判斷def swap s...

劍指Offer之字串全排列

題目 輸入乙個字串,列印出該字串中字元的所有排列。你可以以任意順序返回這個字串陣列,但裡面不能有重複元素 輸入 s abc 輸出 abc acb bac bca cab cba class solution for int j i j變形二 列印字串的所有子串行 public class demo2...