此题主要需要考虑的是如何去重,当字符串存在重复字符时
1.使用set去重
使用set记录所有的排列,由于set中元素的唯一性,已经存在的元素无法被插入
代码如下:
class Solution {
public:
vector<string> permutation(string s) {
set<string>tem;
backtrack(s,0,tem);
vector<string> ans(tem.begin(),tem.end());
return ans;
}
void backtrack(string s,int start,set<string>&tem)
{
if(start == s.size() - 1)
{
tem.insert(s);
return;
}
for(int i = start;i < s.size();i++)
{
swap(s[start],s[i]);
backtrack(s,start + 1,tem);
swap(s[start],s[i]);
}
}
};
2.排序去重