回溯法,然后用set去重
class Solution {
public:
string s;
vector<string>result;
void backtracking(string str,int len,int index){
if(index==len){
result.push_back(str);
return;
}
for(int i=index;i<len;++i ){
swap(str[i],str[index]);
backtracking(str,len,index+1);
swap(str[i],str[index]);
}
}
vector<string> Permutation(string str) {
s="";
result.clear();
unordered_set<string>st;
if(str.empty())return result;
int n=str.length();
backtracking(str,n,0);
int m=result.size();
for(int i=0;i<m;++i){
st.insert(result[i]);
}
result.clear();
for(auto it=st.begin();it!=st.end();it++){
result.push_back(*it);
}
sort(result.begin(),result.end());
return result;
}
};