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

面试题28:字符串的排列

2013-08-05 21:36 330 查看
/*输入一个字符串,打印出字符串的所有排列,例如输入字符串abc,则打印出a、b、c、所能排列出的所有字符串,
abc、acb、bac、cab、cba*/
#include <iostream>
using namespace std;
//字符串的排列函数
void Permuatation(char *pStr, char *pBegin)
{
if(*pBegin == '\0')
{
cout << pStr << endl;
}else
{
for(char *pCh = pBegin; *pCh != '\0'; ++pCh)//++pCh用来改变要排列的字符串的第一个字符
{
char tmp = *pCh;
*pCh = *pBegin;
*pBegin = tmp;

Permuatation(pStr, pBegin + 1);//递归排列第一个字符后面的字符串

tmp = *pCh;
*pCh = *pBegin;
*pBegin = tmp;
}
}

}
//封装后的字符串排列函数
void Permuatation(char *pStr)
{
if(pStr == NULL)
return;
Permuatation(pStr, pStr);
}
//=====测试代码=====
void Test(char *pStr)
{
if(pStr == NULL)
cout << "Test for NULL Begins:" << endl;
else
cout << "Test for " << pStr <<" Begins:" << endl;
Permuatation(pStr);
cout << endl;
}
int main()
{
char string1[] = "abc";
Test(string1);
char string2[] = "ab";
Test(string2);
char string3[] = "a";
Test(string3);
char string4[] = "";
Test(string4);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: