美文网首页
2020-04-02 刷题1(字符串)

2020-04-02 刷题1(字符串)

作者: nowherespyfly | 来源:发表于2020-04-06 13:18 被阅读0次

    字符串的全排列

    用set去重。
    全排列用dfs来做,将当前字符串分为两部分,第一部分是第一个字符,其子问题为将第一个字符后面的所有字符(包括第一个字符)与当前字符交换,这样就确定了第一个字符,然后再递归的对第二个字符进行确定。

    class Solution {
    public:
        set<string> all_permute;
        void get_permute(string s, int idx){
            if(idx == s.size() - 1) {
                all_permute.insert(s);
                return;
            }
            for(int i = idx; i < s.size(); i++){
                string tmp = s;
                swap(tmp[idx], tmp[i]);
                get_permute(tmp, idx+1);
            }
        }
        vector<string> permutation(string s) {
            get_permute(s, 0);
            vector<string> ret_permute;
            set<string>::iterator iter = all_permute.begin();
            for(; iter != all_permute.end(); iter++)
                ret_permute.push_back(*iter);
            return ret_permute;
        }
    };
    

    相关文章

      网友评论

          本文标题:2020-04-02 刷题1(字符串)

          本文链接:https://www.haomeiwen.com/subject/arvxphtx.html