剑指offer--字符串的排列

来源:互联网 发布:点阵取字模软件 编辑:程序博客网 时间:2024/05/29 05:01

题目描述

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

class Solution {public:    void permute(string prefix, string str, vector<string> &v1){        if(str.length() == 0)            v1.push_back(prefix);        for(int i =0; i < str.length(); ++i){            permute(prefix+str[i], str.substr(0, i)+str.substr(i+1, str.length()), v1);        }    }    vector<string> Permutation(string str) {        vector<string> v1;        if(str.length() ==0 )            return v1;        permute("", str, v1);        sort(v1.begin(), v1.end());        v1.erase(unique(v1.begin(), v1.end()), v1.end());        return v1;    }};

输入:“cab”,输出如下:
这里写图片描述
输入:“aaa”输出如下:
这里写图片描述
输入:“aaabc”,输出如下:
这里写图片描述

0 0
原创粉丝点击