字符串的无重复全排列

using namespace std;

void function(char* pStr, char* pBegin);
bool IsSwap(char* pBegin, char* pEnd);

int main(void)
{

char str[] = "aabc";

function(str,str);

return 0;

}

//在[pBegin,pEnd]区间中是否有字符与下标为pEnd的字符相等
bool IsSwap(char* pBegin, char* pEnd)
{

char *p;
for (p = pBegin; p < pEnd; p++)
{
    if (*p == *pEnd)
        return false;
}
return true;

}

void function(char* pStr, char* pBegin)
{

if (*pBegin == '\0')
{
    printf("%s\n",pStr);
}
else
{
    for (char* pCh1 = pBegin; *pCh1 != '\0'; pCh1++)
    {
        if (IsSwap(pBegin, pCh1))
        {
            swap(*pBegin, *pCh1);
            function(pStr, pBegin+1);
            swap(*pBegin, *pCh1);
        }
    }
}

}

阅读更多
文章标签: 字符串
个人分类: 字符串的处理
上一篇arm-linux-gcc交叉编译器安装说明
下一篇求一个二叉搜索树中第K个最小值
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭