class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串vector
*/
void recursion(vector<string>&res,string& str,vector<int>&vis,string &tmp)
{
if(tmp.size()==str.size())
{
res.push_back(tmp);
}
for(int i =0;i<str.size();i++)
{
if(vis[i])
continue;
if(i>0&&str[i]==str[i-1]&&!vis[i-1])
continue;
vis[i] = 1;
tmp+=str[i];
recursion(res,str,vis,tmp);
//回溯
vis[i] = 0;
tmp.pop_back();
}
}
vector<string> Permutation(string str) {
// write code here
sort(str.begin(),str.end());
vector<int>vis(str.size(),0);
string tmp;
vector<string>res;
recursion(res,str,vis,tmp);
return res;
}
};