字符串的排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
思路:
这是一个全排列问题,然后排序。
class Solution {
public:
vector<string> ans;
set<string> res; //排好序了
vector<string> Permutation(string str) {
if(str=="")
return ans;
sort(str.begin(), str.end());
dfs(0, str);
ans.assign(res.begin(), res.end());
return ans;
}
void dfs(int pos, string& src)
{
if(pos == src.size())
{
res.insert(src);
}
for(int i = pos; i < src.size(); ++i)
{
swap(src[i], src[pos]);
dfs(pos+1, src);
swap(src[i], src[pos]);
}
}
};