面试题28.字符串的排列

题目:输入一个字符串,打印出该字符串中字符的全部排列。例如输入字符串abc,ios

则打印出由字符a,b,c所能排列出来的全部字符串abc,acb,bac,bca,cab和cba.spa

 

此题的主要步骤由以下几步:code

1.求出全部可能出如今第一个位置的字符blog

2.将第一个字符与后面字符分别交换递归

3.将第一个字符后面的字符递归步骤1,2字符串

 

代码以下:io

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void FunOfString(char* Str,char* Begin)
 5 {
 6     if(!Str||!Begin)
 7     {
 8         return;
 9     }
10 
11     if(*Begin=='\0')
12     {
13         cout<<Str<<endl;
14     }
15     else
16     {
17         for(char* ch=Begin;*ch!='\0';ch++)
18         {
19             char temp;
20             temp=*ch;
21             *ch=*Begin;
22             *Begin=temp;
23 
24             FunOfString(Str,Begin+1);
25 
26             temp=*ch;
27             *ch=*Begin;
28             *Begin=temp;
29         }    
30     }
31 }
32 
33 int main()
34 {
35     char Str[]="vpoet";
36     FunOfString(Str,Str);
37     system("pause");
38     return 0;
39 }

运行截图:class

相关文章
相关标签/搜索