面试题28:字符串的排列
2013-08-05 21:36
330 查看
/*输入一个字符串,打印出字符串的所有排列,例如输入字符串abc,则打印出a、b、c、所能排列出的所有字符串, abc、acb、bac、cab、cba*/ #include <iostream> using namespace std; //字符串的排列函数 void Permuatation(char *pStr, char *pBegin) { if(*pBegin == '\0') { cout << pStr << endl; }else { for(char *pCh = pBegin; *pCh != '\0'; ++pCh)//++pCh用来改变要排列的字符串的第一个字符 { char tmp = *pCh; *pCh = *pBegin; *pBegin = tmp; Permuatation(pStr, pBegin + 1);//递归排列第一个字符后面的字符串 tmp = *pCh; *pCh = *pBegin; *pBegin = tmp; } } } //封装后的字符串排列函数 void Permuatation(char *pStr) { if(pStr == NULL) return; Permuatation(pStr, pStr); } //=====测试代码===== void Test(char *pStr) { if(pStr == NULL) cout << "Test for NULL Begins:" << endl; else cout << "Test for " << pStr <<" Begins:" << endl; Permuatation(pStr); cout << endl; } int main() { char string1[] = "abc"; Test(string1); char string2[] = "ab"; Test(string2); char string3[] = "a"; Test(string3); char string4[] = ""; Test(string4); return 0; }
相关文章推荐
- 程序员面试题精选100题(28)-字符串的排列[算法]
- 字符串的排列(面试题28)
- 剑指offer--面试题28:字符串的排列--Java实现
- 面试题28:字符串的排列
- 剑指offer 面试题28—字符串的排列
- 程序员面试题精选100题(28)-字符串的排列
- 程序员面试题精选100题(28)-字符串的排列[算法]
- 面试题28:字符串排列
- 面试题28:字符串的排列
- 分解让复杂问题简单化-面试题28-字符串的排列与组合
- 面试题28:字符串的排列
- 剑指Offer----面试题28:字符串的排列 & 去重
- 剑指Offer:面试题28——字符串的排列(java实现)(待序)
- 面试题28:字符串全排列
- 海涛老师的面试题-作业28-字符串的排列组合问题。
- 剑指offer-面试题28.字符串的排列
- 面试题28:字符串的排列
- 《剑指Offer》面试题28:字符串的排列
- 面试题28—字符串的排列
- 面试题28字符串的排列