面试训练字符串全排列
2012-09-10 11:41
211 查看
这道题目看起来像递归,思路还是不够清晰。
海涛的思路 是 首先 确定第一位的元素,然后确定后面的第二位的元素,这样递归向下知道遇到最后一个'\0'打印字符串。
这样递归起来的思路就很清晰了,
1 第一位和后面某位交换,
2 递归进入 后序再相似处理
3 还原第一位原来的元素。
这样代码写起来就顺手了。但是注意一点就是递归退出条件。为字符串结尾。
我该题开始犯的错误
1 打印错误,我实在交换后打印一个字符然后连续打印字符。此时出现的问题 就是递归未还原以前的元素,我就打印,这样产生问题
代码如下
#include "stdio.h" #include "string.h" void listStr(char *str,int start,int end) { int st =start; int ed=end; char ch; if(str == NULL) return; if(str[start]=='\0') { printf("%s\n",str); } else { for(;st<=end;st++) { ch = str[start]; str[start]=str[st]; str[st]=ch; listStr(str,start+1,end); ch = str[start]; str[start]=str[st]; str[st]=ch; } } } int main() { char str[1024]; int len; int start; scanf("%s",str); len = strlen(str); listStr(str,0,len-1); }
相关文章推荐
- 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
- 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ
- 面试100题53--字符串全排列
- 微软面试100题系列---字符串的排列
- 面试100题系列之5字符串的排列组合问题
- 面试训练字符串的组合
- 面试算法(二十七)字符串的排列
- 面试算法学习-4-字符串全排列
- [互联网面试笔试汇总C/C++-11] 字符串全排列和组合算法
- 面试28字符串的排列组合
- [面试备忘]字符串穷举排列 + 有序数组求和
- 面试训练对称子字符串的最大长度
- 微软等数据结构+算法面试100题(2)--给出一个函数来输出一个字符串的所有排列
- 字符串的排列 【微软面试100题 第五十三题】
- 字符串的排列 【微软面试100题 第五十三题】
- 面试题28—字符串的排列
- 九度 Online Judge 算法 刷题 题目1369:字符串的排列
- 蓝桥杯 算法训练 Cowboys By Assassin dp+字符串操作
- (C++)剑指offer-27:字符串的排列(分解让复杂问题简单)(没太懂)
- 字符串的全排列和组合算法