剑指Offer:字符串的排列

来源:互联网 发布:淘宝手机端详情编辑 编辑:程序博客网 时间:2024/05/29 05:10

字符串的排列


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


我觉得这是最暴力的解法了。


class Solution {public:    vector<string> Permutation(string str) {        if(str.empty()) return vector<string>{};        set<string> sr;        int len=str.length();        vector<bool> bflag(len,false);        string s{};        toGet(sr,str,len,bflag,s);        vector<string> res(sr.begin(),sr.end());        return res;    }private:    void toGet(set<string> &sr,string &str,int &len,vector<bool> bflag,string s){        if(s.length()==len){            sr.insert(s);            return;        }        for(int i=0;i<len;++i){            if(!bflag[i]){                bflag[i]=true;                toGet(sr,str,len,bflag,s+str[i]);                bflag[i]=false;            }        }    }};
0 0
原创粉丝点击