面試題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

相關文章
相關標籤/搜索