首页 > 其他 > 详细

28 字符串的排列

时间:2018-05-04 17:44:12      阅读:166      评论:0      收藏:0      [点我收藏+]

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


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

 

C++:

 1 class Solution {
 2 private:
 3     vector<string> res ;
 4 public:
 5     vector<string> Permutation(string str) {
 6         if (str.empty())
 7             return res ;
 8         sort(str.begin() , str.end()) ;
 9         bool isUsed[15]  = {false};
10         string temp = "" ;
11         backtracking(str,isUsed,temp) ;
12         return res ;
13     }
14     
15     void backtracking(string str , bool isUsed[] , string temp){
16         if (temp.size() == str.size()){
17             res.push_back(temp) ;
18             return ;
19         }
20         for(int i = 0 ; i < str.size() ; i++){
21             if (isUsed[i])
22                 continue ;
23             //处理重复字符  比如两个bac1c2  bac2c1 只算其中一种
24             if (i!=0 && str[i] == str[i-1] && !isUsed[i-1])
25                 continue ;
26             isUsed[i] = true ;
27             temp += str[i] ;
28             backtracking(str,isUsed,temp) ;
29             temp.pop_back();
30             isUsed[i] = false ;
31         }
32     }
33 };

 

28 字符串的排列

原文:https://www.cnblogs.com/mengchunchen/p/8991692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!