字符串的排列

来源:互联网 发布:广告宣传语音制作软件 编辑:程序博客网 时间:2024/05/30 02:53


class Solution {public:        vector<string> v;int leng = 0;        void buildString(string s,char c[],int len,bool flag[]){        if(len == leng){            for(int i = 0; i < v.size(); i++)                if(s == v[i])                    return;            v.push_back(s);            return;        }        for(int i = 0; i < leng; i++){            if(flag[i])                continue;         flag[i] = true;            s += c[i];            buildString(s,c,len+1,flag);            flag[i] = false;            s = s.substr(0,s.length()-1);        }    }vector<string> Permutation(string str) {        if(str.length() == 0)            return v;        char c[10];        c[0] = str[0];        leng = str.length();        for(int i = 1; i < str.length(); i++){            int j = i - 1;            for(; j >= 0; j--){                if(c[j] < str[i]){                    c[j+1] = str[i];                    break;                }else{                    c[j+1] = c[j];                }            }            if(j < 0)            c[0] = str[i];        }        string s = "";        bool flag[str.length()];        for(int i = 0; i < str.length(); i++)            flag[i] = false;      buildString(s,c,0,flag);        return v;}};




0 0