码迷,mamicode.com
首页 > 其他好文 > 详细

面试题38. 字符串的排列(全排列)

时间:2020-05-09 17:02:54      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:swa   alt   height   style   tor   第一个   log   字典顺序   索引   

题目:

技术图片

 

 

解答:

 1 class Solution {
 2 public:
 3     vector<string> permutation(string str)
 4     {
 5         vector<string> result;
 6         if(str.empty()) 
 7         {
 8             return result;
 9         }
10          
11         Permutation(str,result,0);
12          
13         // 此时得到的result中排列并不是字典顺序,可以单独再排下序
14         sort(result.begin(),result.end());
15          
16         return result;
17     }
18      
19     void Permutation(string str,vector<string> &result,int begin)
20     {
21         if(begin == str.size()-1) // 递归结束条件:索引已经指向str最后一个元素时
22         {
23             if(find(result.begin(),result.end(),str) == result.end())
24             {
25                 // 如果result中不存在str,才添加;避免aa和aa重复添加的情况
26                 result.push_back(str);
27             }
28         }
29         else
30         {
31             // 第一次循环i与begin相等,相当于第一个位置自身交换,关键在于之后的循环,
32             // 之后i != begin,则会交换两个不同位置上的字符,直到begin==str.size()-1,进行输出;
33             for(int i=begin;i<str.size();++i)
34             {
35                 swap(str[i],str[begin]);
36                 Permutation(str,result,begin+1);
37                 swap(str[i],str[begin]); // 复位,用以恢复之前字符串顺序,达到第一位依次跟其他位交换的目的
38             }
39         }
40     }
41      
42     void swap(char &fir,char &sec)
43     {
44         char temp = fir;
45         fir = sec;
46         sec = temp;
47     }
48 };

 

面试题38. 字符串的排列(全排列)

标签:swa   alt   height   style   tor   第一个   log   字典顺序   索引   

原文地址:https://www.cnblogs.com/ocpc/p/12858432.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!