解法:回溯
思想:
https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/mian-shi-ti-38-zi-fu-chuan-de-pai-lie-hui-su-fa-by/
固定用于排列方案的去重,set用于每一位的去重(字符串本身有重复)
代码
class Solution {
public:
vector<string>res;
vector<string> permutation(string s) {
dfs(s, 0);
return res;
}
void dfs(string &s, int index){
if(index == s.size() - 1){
res.push_back(s);
return;
}
//set要为局部变量,用来进行每一位的去重
unordered_set<char>my_set;
for(int i = index; i < s.size(); i++){
if(my_set.find(s[i]) != my_set.end())
continue;
my_set.insert(s[i]);
swap(s[i], s[index]);
dfs(s, index + 1);
swap(s[i], s[index]);
}
}
};