leetcode字符串的排列

leetcode字符串的排列_第1张图片

 

此题主要需要考虑的是如何去重,当字符串存在重复字符时

1.使用set去重

使用set记录所有的排列,由于set中元素的唯一性,已经存在的元素无法被插入

代码如下:

class Solution {
public:

    vector permutation(string s) {
        settem;
        backtrack(s,0,tem);
        vector ans(tem.begin(),tem.end());
        return ans;
    }
    void backtrack(string s,int start,set&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.排序去重

 

你可能感兴趣的:(leetcode字符串的排列)