递归,注意判断去重。
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; } };