一、问题描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
二、思路
与 Permutations II思路完全一致。
三、代码
class Solution {
public:
vector<string> Permutation(string str) {
vector<string> vec;
if(str.size() == 0) return vec;
change(str,0,str.size(),vec);
return vec;
}
private:
void change(string s, int begin,int end,vector<string> &vec){
if(begin == end)
vec.push_back(s);
else{
for(int i = begin; i < end; ++i){
if(i != begin && s[begin] == s[i])
continue;
swap(s[begin],s[i]);
change(s,begin + 1,end,vec);
}
}
}
};