剑指offer:字符串排列

void permutation(*pstr){
     if(pstr==null) return;
     permutation2(pstr,pstr);;
}
void permutation2(*pstr,*pbegin){
     if(*pbegin=='\0'){
         printf("%s\n",pstr);
     }
     else{
         for(char *pch=pbegin;pch!='\0';++pch) {
              char temp=*pch;
              *pch = *pbegin;
              *pbegin=temp;
              permutation2(pstr,pbegin+1);
              char temp=*pch;
              *pch = *pbegin;
              *pbegin=temp;
          }
     }
}

输入:字符串  如abc

输出:全排列  abc,bac,cba,acb,bca,cab


把字符串分成两个部分,递归 求解。将开始字符跟后续字符依次交换。



阅读更多
个人分类: 面试
博主设置当前文章不允许评论。

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

关闭
关闭
关闭