欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试题 08.08. 有重复字符串的排列组合

程序员文章站 2024-03-04 09:07:17
...

面试题 08.08. 有重复字符串的排列组合 - 力扣(LeetCode)
面试题 08.08. 有重复字符串的排列组合

回溯,去重:剑指 Offer 38. 字符串的排列_zj-CSDN博客

class Solution {
public:
    vector<string> res;
    string tmp;
    vector<string> permutation(string S) {
        sort(S.begin(), S.end());
        backtrack(S);
        return res;
    }
    void backtrack(string &s){
        if(tmp.size() == s.size()){
            res.emplace_back(tmp);
            return;
        }
        for(int i = 0; i < s.size(); ++i){
            if(s[i] == '_' || (i > 0 && s[i] == s[i-1]))    continue;
            char c = s[i];
            tmp += s[i];
            s[i] = '_';
            backtrack(s);
            s[i] = c;
            tmp.pop_back();
        }
    }
};