回溯法,然后用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;
    }
};