题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
class Solution {
public:
vector<string> Permutation(string str) {
vector<string> tvec;
if(str.length() == 0)
{
return tvec;
}
Permutation(str,0,tvec);
sort(tvec.begin(),tvec.end());
tvec.erase(unique(tvec.begin(),tvec.end()),tvec.end());
return tvec;
}
void Permutation(string& str,int n,vector<string>& tResVec)
{
int length = str.length();
if(length == n)
{
tResVec.push_back(str);
return;
}
for(int i = n;i<length;++i)
{
char tmp = str[i];
str[i] = str[n];
str[n] = tmp;
Permutation(str,n+1,tResVec);
tmp = str[i];
str[i] = str[n];
str[n] = tmp;
}
}
};
网友评论