【程序员面试宝典】递归之两个字符串连接次序问题(P83)
题目:
输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序。即输出125、126、145、146.
解决方案:
此处仅考虑第一个字符串中的字符在第二个字符串中的相对位置不变的情况。
此时,可以按照递归的思路思考如下:
(1)递归过程中:
采用两个指针分别指向两个字符串,对应字符相同,则同时后移,然后继续递归查找后面的相同的字符;
(2)边界:
当记录的次序长度已经和第二个字符串长度相等,则可以输出了。
因此,代码如下:
#include <iostream>
#include "stdio.h"
#include <string.h>
using namespace std;
void PrintfArray(char *p_str,char *s_str,int *print_arr,int p_len,int s_len,int print_arr_num,int p_start_num,int s_start_num){int pStartnum = p_start_num,sStartnum = s_start_num;int printnum = print_arr_num;if(printnum == s_len){for(int i=0;i < s_len;i++){cout<<*(print_arr+i)<<" ";}cout<<endl;return;}for(int i=pStartnum;i<p_len;i++){for(int j=sStartnum;j<s_len;j++){if(*(p_str+i) == *(s_str+j)){print_arr[printnum] = i+1;pStartnum = i;sStartnum = j;PrintfArray(p_str,s_str,print_arr,p_len,s_len,printnum+1,pStartnum+1,sStartnum+1);}}}
}
void Con(char *p_str,char *s_str){int p_len = strlen(p_str);int s_len = strlen(s_str);int *print_arr=new int[s_len];unsigned int print_arr_num=0;if(NULL==p_str && NULL==s_str){cout<<"error"<<endl;return;}if(NULL==print_arr){cout<<"error1"<<endl;return;}PrintfArray(p_str,s_str,print_arr,p_len,s_len,0,0,0);
}
main(){char ParString[]="abdbcc";char SonString[]="abc";Con(ParString,SonString);system("pause"); return 0;
}
【程序员面试宝典】递归之两个字符串连接次序问题(P83)相关推荐
- 程序员面试宝典笔记1-基本概念预处理,const与sizeof
程序员面试宝典笔记1-基本概念&预处理,const与sizeof 基本概念 赋值语句: i++: 类型转换 运算符问题 a,b交换与比较 其他 预处理 const sizeof 基本概念 赋值 ...
- 程序员面试宝典(第4版)
<程序员面试宝典(第4版)> 基本信息 作者: 欧立奇 刘洋 段韬 出版社:电子工业出版社 ISBN:9787121207242 上架时间:2013-7-8 出版日期:2013 年7月 开 ...
- Java程序员面试宝典
第1部分 求职过程 古人云:凡事预则立,不预则废.机会都是垂青有准备的人的.为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解.把能够预见的.必须做的事情早一些做完,这样在大规模招聘开始的 ...
- 《程序员面试宝典3》大量错误(50+)纠正表
本文转自:http://blog.csdn.net/hilyoo/article/details/4466680 <程序员面试宝典>第3版大量错误纠正表 以前随手翻了翻,想写这篇文章没有写 ...
- java只会用不知道原理6_程序员面试宝典之14道初级Java面试题分享
程序员面试宝典之14道初级Java面试题分享 程序员面试宝典之14道初级Java面试题分享! 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应 ...
- 《程序员面试宝典》精华 编程语言部分
<程序员面试宝典>精华 编程语言部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.当然这 ...
- ASP.NET的几个试题(《C#与.NET程序员面试宝典》)
更多参考:博客园笔记 面试题1:ASP.NET是什么 ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应 ...
- 《程序员面试宝典》精华 底层部分
<程序员面试宝典>精华 底层部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是没有 ...
- 《程序员面试宝典》精华 面向对象部分
<程序员面试宝典>精华 面向对象部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是 ...
最新文章
- 当向后台插入或读取JSON数据遇见回车时
- Go包导入与Java的差别
- python字符串中strip() 函数和 split() 函数的详解
- Google的价值观
- Logistic回归与梯度下降法
- VC++ 使用attributes定义接口
- 八皇后问题判断此位置是否需合适
- oracle创建一个表同已存在表结构一样
- 数字农业WMS库存操作重构及思考
- qml鼠标拖动_QML学习笔记(七)— 实现可拖拽、编辑、选中的ListView
- 在unity中生成螺旋线的效果
- 【E-DEEC】基于matlab增强的分布式能源有效集群(E-DEEC)【含Matlab源码 1566期】
- Android Monkey Test
- 阿里矢量图标引入方法
- 同济线性代数教材(第五版)-第2章 矩阵及其运算
- java.lang.NoSuchMethodError 之 依赖冲突解决方案
- 量化投资_期货日内交易几个问题的考证
- js+Canvas 利用js 实现浏览器保存图片到本地
- 常用颜色表以及中国传统颜色名录(附宏定义)
- 好大一个家 陈佩斯
热门文章
- 46. Permutations 1
- http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=9332 多broser
- [Django学习] Django基础(5)_优化分页器
- 学习 Python 的 14 张思维导图
- Java :内部类基础详解
- 剑指offer 面试题5—从尾到头打印链表
- mongodb集群分片环境搭建
- EncodingAESKey
- Android游戏开发基本知识
- 也谈虚拟化的服务器选型,以及性能考虑