- 简简单单的回溯。
 - 注意set去重
 
class Solution {
public:
    void perm(int pos, string s, set<string>& res ){
        if(pos==s.size()-1){
            res.insert(s);
            return;
        }
        for(int i = pos; i< s.length();i++){//回溯
            swap(s[i],s[pos]);//字符串对应位置就自动变了
            perm(pos+1,s,res);
            swap(s[i],s[pos]);
        }
    }
    vector<string> Permutation(string str) {
        if(str.empty()) return {};
        set<string> res;
        perm(0,str,res);
        return vector<string>({res.begin(),res.end()});//记住这种set转换为vector的方式
    }
};
京公网安备 11010502036488号