您的位置:首页 > 其它

字符串的排列

2017-07-17 16:11 141 查看
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

思路1:在stl中有排列的相关函数,可以直接来

vector<string> Permutation(string str) {
vector<string> answer;
if(str.empty())
return answer;       
sort(str.begin(),str.end());
do{
answer.push_back(str);
}while(next_permutation(str.begin(),str.end()));
return answer;
}思路2:自己写全排列,然后排序
class Solution {
public:
vector<string> vec;
vector<string> Permutation(string str) {
PermutationHelp(str,0,str.size()-1);
sort(vec.begin(),vec.end());
return vec;
}
void PermutationHelp(string &str,int begin,int end)
{
if(begin == end)
{
if(find(vec.begin(),vec.end(),str)==vec.end())
vec.push_back(str);
}
else
{
for(int j=begin;j<=end;j++)
{
swap(str[j], str[begin]);
PermutationHelp(str,begin+1,end);
swap(str[j], str[begin]);
}
}

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