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; } };