字符串的排列

来源:互联网 发布:mac ppt 页面无法显示 编辑:程序博客网 时间:2024/06/12 00:23

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串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]); } } }};



原创粉丝点击