美文网首页
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(字符串)

    字符串的全排列 用set去重。全排列用dfs来做,将当前字符串分为两部分,第一部分是第一个字符,其子问题为将第一个...

  • leetcode刷题之字符串

    leetcode刷题,使用python 1, 无重复字符的最长子串 —— 0003 字符串 给定一个字符串 s ,...

  • Manacher's Algorithm 的理解

    在 leetcode 刷题刷到求字符串的最长回文字串,而马拉车算法(Manacher's Algorithm), ...

  • 【第七章】python算法刷题开始(3-初级)

    今天继续刷题,但感觉今天遇到的每个题都有点困惑,大家一起帮忙看看: 1、旋转字符串 我的代码: 代码也经过多次验证...

  • 教你怎么做一只考试锦鲤

    考试前14天疯狂刷题,各个平台疯狂刷题,刷题就对了。 刷的越多,大脑记得越多,也许你刷10道题,能记住的只有1道题...

  • leecode刷题(16)-- 字符串转换整数

    leecode刷题(16)-- 字符串转换整数 字符串转换整数 描述: 请你来实现一个 atoi 函数,使其能将字...

  • 刷题说(1)

    所谓高效刷题,应该是根据结构化思维所呈现出的不足,而进行的针对性提高。 如果按我最近说的框架学习法,那就是去填充框架。

  • leetcode刷题-1

    小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一...

  • 刷题纠错-1

    5.21卷二 1、留置权的概念与构成要件

  • 刷题总结(1)

    题目描述 给出一个数n,求1到n中,有多少个数不是2 5 11 13的倍数。 输入描述 本题有多组输入每行一个数n...

网友评论

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

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