输入一个字符串,打印该字符串的所有排列。
可以返回任意的字符串数组,但不能有重复元素。
递归:
class Solution
{
public:
vector<string> permutation(string s)
{
set<string> res;
permutation(s,0,res);
return vector<string>(res.begin(),res.end());
}
void permutation(string s, int begin ,set<string>& ans)
{
if(begin==s.size()) ans.insert(s);//找到一个全排列记录下来
for(int i=begin;i!=s.size();i++)
{
swap(s[i],s[begin]);//把i换到第一位
permutation(s,begin+1,ans);//剩余部分全排列
swap(s[i],s[begin]);//归位
}
}
};