题目:输入一个字符串,打印出该字符串中所有字符的排列。
思想:(1)把字符串分为两部分:一部分i是字符串的第一个字符;另一部分是第
一个字符以后的所有字符,求这部分字符串的排列
(2)拿第一个字符和它后面的字符逐个交换
这是典型的递归思路
void Permutation(char* pStr)
{
if(pStr==nullptr)
return;
Permutation(pStr,pStr);
}
void Permutation(char* pStr,char* pBegin)
{
if(*pBegin=='\0')
{
printf("%s\n",pStr);
}
else
{
for(char* pCh=pBegin;*pCh!='\0';++pCh)
{
char temp=*pCh;
*pCh=*pBegin;
*pBegin=temp;
Permutation( pStr,pBegin+1);
temp=*pCh;
*pCh=*pBegin;
*pBegin=temp;
}
}
}