输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
class Solution {
public:
vector<string> Permutation(string str) {
vector<string> res;
if (str.empty())
return res;
f(res, str, 0);
sort(res.begin(), res.end());
return res;
}
void f(vector<string>& res,string& str, int begin){
if (begin >= str.size()) return;
if (begin == str.size() - 1){
res.push_back(str);
return;
}
for (int i = begin; i < str.size(); ++i) {
if (i != begin && str[i] == str[begin])
continue;
swap(str[i], str[begin]);
f(res, str, begin+1);
swap(str[i], str[begin]);
}
}
};