您的位置:首页 > 其它

字符串全排列

2017-09-15 00:22 155 查看


题目描述

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

输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

#include <algorithm>
class Solution {
public:
vector<string> result_final;
set<string> result;
void permRec(string str, int i){
if(i >= str.length()){
return;
}
if(i == str.length() - 1)
{
result.insert(str);
return;
}
else
{
for(int j = i; j < str.length(); j++){
//if(str[i] != str[j]){
char tmp = str[i];
str[i] = str[j];
str[j] = tmp;
permRec(str, i + 1);
tmp = str[i];
str[i] = str[j];
str[j] = tmp;
//}
}
}
}
vector<string> Permutation(string str) {
//sort(str.begin(), str.end());
permRec(str, 0);
for(set<string>::iterator it = result.begin(); it != result.end(); it++){
result_final.push_back(*it);
}
//sort(result.begin(), result.end());
return result_final;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: