字符串排列

来源:互联网 发布:华为云计算论坛 编辑:程序博客网 时间:2024/05/01 18:11
题目描述

编写一个方法,确定某字符串的所有排列组合。
给定一个string A和一个int n,代表字符串和其长度,请返回所有该字符串字符的排列,保证字符串长度小于等于11且字符串中字符均为大写英文字符,排列中的字符串按字典序从大到小排序。(不合并重复字符串)
测试样例:
"ABC"

返回:["CBA","CAB","BCA","BAC","ACB","ABC"]

#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;class Permutation{public:    void core(vector<string>&result,string &s,int index)    {        int len=s.size();        if(index==len-1)        {            result.push_back(s);            return;        }        for(int i=index;i<len;i++)        {            swap(s[i],s[index]);            core(result,s,index+1);            swap(s[i],s[index]);        }    }    vector<string> getPermutation(string A)    {        vector<string>result;        core(result,A,0);        sort(result.begin(),result.end(),greater<string>());        return result;    }};int main(){    Permutation s;    string A="ABC";    vector<string>svc=s.getPermutation(A);    for(vector<string>::iterator it=svc.begin();it!=svc.end();it++)        cout<<*it<<endl;}


0 0
原创粉丝点击