【程序员面试宝典】递归之两个字符串连接次序问题(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应 ...
- 《程序员面试宝典》精华 底层部分
<程序员面试宝典>精华 底层部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是没有 ...
- 《程序员面试宝典》精华 面向对象部分
<程序员面试宝典>精华 面向对象部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是 ...
最新文章
- 美国AI博士指出,自学Python到底能做什么
- js和php获取页面的url信息
- VS2013环境生成和调用DLL动态链接库
- 005_CSS通配符选择器
- 【C++】34. gflags中的 --flagfile= 用法
- 团队作业5-Alpha版本测试报告(彼岸芳华队)
- 19_clickhouse,数据查询与写入优化,分布式子查询优化,外部聚合/排序优化,基于JOIN引擎的优化,SQL优化案例,物化视图提速,查询优化常用经验法则,选择和主键不一样的排序键,数据入库优化
- C#数组和集合专题4(Hashtable类)
- Markdown-数学公式语法
- 关于make_work_guard猜想
- 取模(mod)与取余(rem)的区别——Matlab学习笔记
- 【算法】LeetCode算法题-Length Of Last Word
- igm焊接机器人基本操作_焊接机器人编程与操作
- Win10台式机前面板耳机无声音,没有Realtek高清晰音频管理器,前置耳机孔无法使用
- java动态运行代码并动态执行
- AutoCAD 经典
- freeradius mysql ad_freeradiusmysql简单配置一例
- 厦门大学应用统计专硕考研上岸经验分享
- 安装nginx--银河麒麟V10(Kylin Linux Advanced Server release V10 (Tercel))操作系统
- PS一分钟打造手机渐变壁纸