题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
vector<string> Permutation(string str){
int strlen=str.length();
if(strlen==0){
vector<string> temp;
return temp;
}
set<string> s;
s.insert(str);
vector<int> a;
for(int i=0;i<strlen;i++)
a.push_back(i);
while(next_permutation(a.begin(),a.end())){
string gstr;
for(int i=0;i<strlen;i++)
gstr=gstr+str[a[i]];
s.insert(gstr);
}
vector<string> vec(s.begin(),s.end());
return vec;
}
int main(){
string str="abc";
Permutation(str);
system("pause");
}