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

字符串排列

程序员文章站 2022-07-12 09:19:36
...

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

牛客网官方题解

class Solution {
public:
    void perm(string str, int pos, set<string> &re) {
        if(pos == str.size()-1) {
            re.insert(str);
            return;
        }
        for(int i = pos; i < str.size(); i++){
            swap(str[pos], str[i]); //每次固定一个元素
            perm(str, pos+1, re);
            swap(str[pos], str[i]); //回溯
        }
    }
    vector<string> Permutation(string str) {
        if(str.size() == 0) return {};
        set<string> re; // 去重
        perm(str, 0, re);
        return vector<string>({re.begin(), re.end()}); //转化为vec
    }
};
相关标签: 剑指offer