原题链接:https://leetcode.cn/problems/permutation-ii-lcci/
dfs + 回溯
class Solution {
public:
set<string> st;
vector<int> visited;
string s;
int n;
vector<string> permutation(string S) {
s = S;
n = S.size();
visited = vector<int> (n, 0);
dfs("");
vector<string> res;
for (auto x : st) res.push_back(x);
return res;
}
void dfs(string str) {
if (str.size() == n) {
st.insert(str);
return;
}
for (int i = 0; i < n; i++) {
if (visited[i] == 1) continue;
visited[i] = 1;
str += s[i];
dfs(str);
visited[i] = 0;
str.pop_back();
}
return;
}
};