递归,注意判断去重。

class Solution {
public:
    vector<string> vec;
    void dfs(string ans, string str)
    {
        int len = str.size();
        if(len == 0)
            vec.push_back(ans);
        else
            for(int i = 0; i < len; i++)
                if(i == 0 || str[i] != str[i - 1])
                    dfs(ans + str[i], str.substr(0, i) + str.substr(i + 1));
    }
    vector<string> Permutation(string str) {
        int len = str.size();
        sort(str.begin(), str.end());
        dfs("", str);
        return vec;
    }
};