字符串的全排列
来源:互联网 发布:义乌淘宝运营培训班 编辑:程序博客网 时间:2024/05/20 06:31
字符串的全排列
代码加说明:
/* * 打印出一列字符串的全排列字符串 * * 使用的方法: —————本算法出自《剑指Offder》一书 * * 观察字符串 a b c d,可以将其分为两部分,第一个字符和剩余的字符 * 显然,如果求出第二部分的全排列,那么一a为其实的所有全排列就求得了, * 依次可以循环地就剩余部分的全排列,显然为一个递归过程 * *将第一个字符依次换做第二部分的字符,得到每一次置换后的第二部分全排列,就可以得到整组的字符串的排列。 * * 考虑的边界情况: * 1.字符串为NULL。 2.字符串为空(即第一个字符即 \0 ) 3.字符串为多个字符 * */#include <iostream>using namespace std;// 递给地进行字符串排列void FullArrayCore(char * pStr, char *pBegin){if ( '\0' == *pBegin){cout << pStr << endl;}else{for (char * pTemp = pBegin; *pTemp != '\0'; ++pTemp){char ch = *pBegin;*pBegin = *pTemp;*pTemp = ch;FullArrayCore(pStr, pBegin + 1);ch = *pBegin;*pBegin = *pTemp;*pTemp = ch;}}return ;}void FullArray(char * pStr){if ( NULL == pStr || '\0' == *pStr){cout<< "Input Array is Null or Empty" << endl;return ;}FullArrayCore(pStr, pStr);return ;}void main(){char normalStr[] = "abcd";cout << "Normal String:" << "\t" << normalStr << endl;FullArray(normalStr);char oneChStr[] = "a";cout << "One Char String:" << "\t" << oneChStr << endl;FullArray(oneChStr);char * nullStr = NULL;cout << "NULL String:" << "\t" << endl;FullArray(nullStr);char emptyStr[] = "";cout << "Empty String:" << "\t" << emptyStr << endl;FullArray(emptyStr);system("pause");return ;}
----Andy @ 2013-06-20
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- 字符串的全排列
- Xorg的一些问题和随想
- 使用g++编译OpenCV程序
- 23种设计模式(5):原型模式
- PAT (Advanced Level) Practise —— 1002. A+B for Polynomials
- Only UTF-8 is available
- 字符串的全排列
- 手把手教你ARC——iOS/Mac开发ARC入门和使用
- VC6.0 实现欢迎界面
- 资深HR告诉你,面试中你不知道的那些秘密!
- no environment 异常
- js幻灯片存档一个
- iOS6.0以上系统访问系统相册隐私提示方法截获
- Python介绍
- 使用默认参数的构造函数