时间限制:1秒 空间限制:32768K 热度指数:322561
本题知识点: 字符串
算法知识视频讲解
题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
class Solution {
public:
vector<string> Permutation(string str) {
map<string,string> m;
vector<string> v;
if(str.length()==0){
return v;
}
string str1;
int i,j,n=str.length();
int arr[] = {0,1,2,3,4,5,6,7,8,9};
do
{
string str1="";
for(i=0;i<n;i++){
str1+=(str[arr[i]]);
}
//cout<<str1<<endl;
m[str1]=str1;
}
while ( next_permutation(arr,arr+n) );
map<string,string>::iterator it;
for(it=m.begin();it!=m.end();it++){
v.push_back(it->second);
//printf("3\n");
}
return v;
}
};