字符串的全排列


前一阵子面试遇到一个题目,要求输出一个字符串的全排列

最终实现的思想是:采用递归的方式。

例如,一个字符串ABCD的全排列,相当于第一个字符是A或B或C或D与其他字符全排列的组合,根据这个思想代码如下:


void Permutation(char* str) {
    if(NULL == str)
        return;
    work(str, str);
}

void work(char* str, char* pBeign) {
    if(*pBeign == '\0') {
        printf("%s\n", str);
    }else {
        for(char* pCh=pBeign; *pCh!='\0'; ++pCh) {
            char temp = *pCh;
            *pCh = *pBeign; 
            *pBeign = temp;
            work(str, pBeign+1);
            temp = *pCh;
            *pCh = *pBeign; 
            *pBeign = temp;
        }
    }
}

你可能感兴趣的:(字符串,全排列)