// 面试题38:字符串的排列
// 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,
// 则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。
static void permutation(char* str)
{
if(str == nullptr)
{
return;
}
_permutation(str, str);
}
static void _permutation(const char* const str, char* pBegin)
{
if(*pBegin == '\0')
{
printf("%s\n", str);
}
else
{
for(char* pCh = pBegin; *pCh != '\0'; ++pCh)
{
char temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
_permutation(str, pBegin + 1);
temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
}
}
}