leetcode字符串的排列

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

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.排序去重

发布了219 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38196982/article/details/104961262
今日推荐