class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return string字符串vector
*/
vector<string> ans;
string path;
vector<bool> st;
vector<string> Permutation(string str) {
if (str.empty()) return {};
sort(str.begin(), str.end());
path.resize(str.size());
st = vector<bool> (str.size());
dfs(str, 0);
return ans;
}
void dfs(string &str, int u) {
if (u == str.size()) ans.push_back(path);
for (int i = 0; i < str.size(); i++) {
if (!st[i]) {
if (i && str[i - 1] == str[i] && st[i - 1]) continue;
path[u] = str[i];
st[i] = true;
dfs(str, u + 1);
st[i] = false;
}
}
}
};