您的位置:首页 > 职场人生

面试题28.字符串的排列

2015-08-30 15:27 423 查看
题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,

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

此题的主要步骤由如下几步:

1.求出所有可能出现在第一个位置的字符

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

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

代码如下:

#include <iostream>
using namespace std;

void FunOfString(char* Str,char* Begin)
{
if(!Str||!Begin)
{
return;
}

if(*Begin=='\0')
{
cout<<Str<<endl;
}
else
{
for(char* ch=Begin;*ch!='\0';ch++)
{
char temp;
temp=*ch;
*ch=*Begin;
*Begin=temp;

FunOfString(Str,Begin+1);

temp=*ch;
*ch=*Begin;
*Begin=temp;
}
}
}

int main()
{
char Str[]="vpoet";
FunOfString(Str,Str);
system("pause");
return 0;
}


运行截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: