劍指Offer(二十七) 字串的排列(字串)

2021-09-12 08:44:28 字數 793 閱讀 7706

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

輸入描述:

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

我們求整個字串的排列,可以看成兩步:首先求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。如下圖所示:

上圖就是分別把第乙個字元a和後面的b、c等字元交換的情形。首先固定第乙個字元,求後面所有字元的排列。這個時候我們仍把後面的所有字元分為兩部分:後面的字元的第乙個字元,以及這個字元之後的所有字元。然後把第乙個字元逐一和它後面的字元交換。

這個思路,是典型的遞迴思路。

#include #include #include #include #include using namespace std;

vectorresult;

void permutationcore(string str, int begin)

for(int i = begin; i < str.length(); i++)

swap(str[begin], str[i]);

permutationcore(str, begin + 1);

}}int main()

return 0;

}

劍指offer二十七 字串的排列

輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。輸入乙個字串,長度不超過9 可能有字元重複 字元只包括大小寫字母。先簡化問題假設這n個字元不重複 大問題 n個字元全排列 讓n個字元依...

(二十)劍指offer之字串的排列

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

劍指offer 字串

問題描述 class solution auto res temp.c str strcpy str,res strcpy 關於c 中string和char 的區別參考 問題描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0...