输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
class Solution {
public:
vector<string> ans;
vector<int> vis;
void dfs(string& dic,int idx,string& str){
if(idx==dic.size()) {
ans.push_back(str);
return;
}
for(int i=0;i<dic.size();i++){
if(vis[i]==0){
str.push_back(dic[i]);//str+=dic[i];
vis[i]=1;
dfs(dic,idx+1,str);
str.pop_back();
vis[i]=0;
while(i<dic.size()-1&&dic[i]==dic[i+1]) i++;
}
}
}
vector<string> permutation(string s) {
sort(&s[0],&s[0]+s.size());//sort(s.begin(),s.end());
string str;
vis=vector<int>(s.size());
dfs(s,0,str);
return ans;
}
};