输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串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]); } } };