题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
1 class Solution { 2 public: 3 void Permutation(string str,int begin,int end,vector<string>& result) 4 { 5 if (begin > end) 6 { 7 result.push_back(str); 8 return; 9 } 10 for (int i = begin ; i <= end ; ++i) 11 { 12 if(str[begin] != str[i] || begin == i) 13 { 14 char tem = str[begin]; 15 str[begin] = str[i]; 16 str[i] = tem; 17 Permutation(str,begin+1,end,result); 18 tem = str[begin]; 19 str[begin] = str[i]; 20 str[i] = tem; 21 } 22 } 23 } 24 vector<string> Permutation(string str) { 25 vector<string> reslut; 26 if (str.length() == 0) 27 return reslut; 28 Permutation(str,0,str.length()-1,reslut); 29 std::sort(reslut.begin(),reslut.end()); 30 return reslut; 31 } 32 };