题目要求:
输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab、cba。
参考资料:剑指offer第28题。
题目分析:
1. 输出的字符串必须包含原字符串的所有字符,只是字符顺序换了;
2. 考虑有字符重复的情况;
3. 思路是:
1) 分别把第一个字符和后面的字符交换;
2) 固定第一个字符,求后面字符的排列;
3) 把第二个字符和后面的字符交换,然后固定.......
代码实现:
#include <iostream> using namespace std; void PrintAllPermutation(char *pStr); int main(void) { char pStr[] = "aaab"; PrintAllPermutation(pStr); return 0; } void PrintAllPermutation(char *pStr,char *pStart) { int flag = 0; if(*pStart=='