class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串vector
*/
void dfs(vector<string> & result,string ¤t,string& str,vector<bool>& vis)
{
if(current.size()==str.size())
{
result.push_back(current);
return;
}
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]=true;
current.push_back(str[i]);
dfs(result,current,str,vis);
current.pop_back();
vis[i]=false;
}
}
vector<string> Permutation(string str) {
if(str.size()==0) return {""};
// write code here
vector<string> result;
string current;
vector<bool> vis(str.size(),false);
sort(str.begin(),str.end());
dfs(result,current,str,vis);
return result;
}
};