面试题28.字符串的排列
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,
则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba.
此题的主要步骤由如下几步:
1.求出所有可能出现在第一个位置的字符
2.将第一个字符与后面字符分别交换
3.将第一个字符后面的字符递归步骤1,2
代码如下:
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 }
运行截图:
作者:vpoet
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/vpoet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。