美文网首页
字符串的排列

字符串的排列

作者: UAV | 来源:发表于2020-06-25 17:24 被阅读0次

题目描述

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

输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
思路:递归,字符交换
如 abc,第0个字符串和第0个开始到最后一个字符交换,得到 abc,bac,cab。递归 bc->bc cb,...

class Solution {
public:
    vector<string> Permutation(string str) {
     vector<string>vec;
        if (str.size() == 0) {
            return vec;
        }
        getString(str, 0, vec);
        /*
        如果不排序,输出结果有错
        正确结果:["abc","acb","bac","bca","cab","cba"]
        输出结果:["abc","acb","bac","bca","cba","cab"]
        */
        sort(vec.begin(), vec.end());
        return vec;
    }
    //遍历字符串
    void getString(string &str, int low,vector<string> &vec) {
        int high = str.size() - 1;
        if (low >= high) {
            vec.push_back(str);
            return;
        }
        else {
            for (int i = low; i <= high; i++)
            {
                //如果相邻字符相同则不重复遍历。如aab
                if (low == i || str[i] != str[low]) {
                    //字符交换
                    swap(str, i, low);
                    getString(str, low + 1,vec);
                    swap(str, low, i);

                }
            }
        }
    }
    void swap(string &s, int start, int end) {
        char tmp = s[start];
        s[start] = s[end];
        s[end] = tmp;
    }

};

相关文章

  • 迭代算法

    问题 输入一个字符串,给出该字符串所有的排列 问题分析 非常标准的排列问题,不考虑字符串重复的前提下共有n!种排列...

  • LeetCode - 0006 - ZigZag Convers

    题目概要 将字符串按照ZigZag的顺序重新排列,求排列之后的新字符串。 题目链接 ZigZag Conversi...

  • 38:字符串的排列

    题目38:字符串的排列 输入一个字符串,打印出该字符串中字符的所有排列。 举例说明 例如输入字符串abc。则打印出...

  • 字符串的全排列

    字符串的全排列 题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 例如输入字符串abc,则输出由字符a...

  • JZ-027-字符串的排列

    字符串的排列 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打...

  • 剑指offer - 字符串的排列

    题目 输入一个字符串,打印出该字符串中字符的所有排列。 例如,输入字符串abc,则打印出由字符串a、b、c能排列出...

  • iOS排列组合算法

    问题1、求长度为N的字符串的所有排列,如字符串abc所有排列为:abc,acb,bac,bca,cab,cba。问...

  • 《剑指offer第二版》面试题38:字符串的排列(java)

    题目描述 输入一个字符串,打印出该字符串的所有排列,例如输入字符串abc,则所有的排列为:abc、acb、bac、...

  • 《剑指offer》

    1.字符串的排列 1.1.题目 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串a...

  • 《剑指offer》— JavaScript(27)字符串的排列

    字符串的排列 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字...

网友评论

      本文标题:字符串的排列

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