輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串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...