题目描述

在算法4-1中已经描述过一种定位子串的算法,但其依赖字符串的其他操作(使用了算法4-3描述的子串提取以及字符串比较)。

下面给出书中另一种相对独立的定位子串算法:

图:求子串位置的定位函数

书中的算法思想是这样的:分别利用计数指针i和j指示主串S和模式串T中当前正待比较的字符位置。算法的基本思想是:从主串S的第pos个字符起和模式的第一个字符比较之,若相等,则继续逐个比较后续字符,否则从主串的下一个字符起再重新和模式的字符比较之。依次类推,直至模式T中的每个字符依次和主串S中的一个连续的字符序列相等,则称匹配成功,函数值为和模式T中第一个字符相等的字符在主串中的序号,否则称匹配不成功,函数值为零。
       你的任务是将S中每次比较的字符输出来,并将匹配的序号输出。

输入格式

3组字符串,每组字符串占一行。每行包含由空格分隔的两个字符串,字符串仅由英文小写字母组成且长度不大于100。3组字符串,每组字符串占一行。每行包含由空格分隔的两个字符串,字符串仅由英文小写字母组成且长度不大于100。

输出格式

每组数据输出2行,第一行是S中每次比较的字符,第二行是后一个字符串在前一个字符串中的位置,如果不匹配,则输出0。

样例输入

string str
thisisalongstring isa
nosubstring subt

样例输出

str
1
thisisisa
5
nosubsubsttring
0
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct HString{char* s;int length;
}*hstring,HSTRING;
int compare(HSTRING,HSTRING);
char* moc();
int main(){HSTRING s1;HSTRING s2;s1.s=moc();s2.s=moc();while(~scanf("%s",s1.s)){getchar();scanf("%s",s2.s);getchar();s1.length=strlen(s1.s);s2.length=strlen(s2.s);printf("\n%d\n",compare(s1,s2));}
}
int compare(HSTRING s1,HSTRING s2){int i=0;int k=0;int j=0;while(i<s1.length&&j<s2.length){if(s1.s[i]==s2.s[j]){printf("%c",s1.s[i]);i++;j++;}else{printf("%c",s1.s[i]);i=++k;j=0;}}if(j==s2.length){return i+1-j;//数组下标从0开始,别忘加1 }return 0;
}
char* moc(){return (char*)malloc(101*sizeof(char));
}

C语言 题目 1689: 数据结构-求子串位置的定位函数相关推荐

  1. Problem A: 算法4-5:求子串位置的定位函数

    Problem Description 在算法4-1中已经描述过一种定位子串的算法,但其依赖字符串的其他操作(使用了算法4-3描述的子串提取以及字符串比较). 下面给出书中另一种相对独立的定位子串算法 ...

  2. c语言求子串 位置 长度,Manchester-求子串位置的定位函数

    解题思路: 1):设主串为 A  B  C  D  E  F  G  H  I  G  K 2):设模式串为 E  F  G 3): ①:开始,先从主串的第一个字符开始匹配 A  B  CD  E  ...

  3. 一般的模式匹配算法(求子串位置)

    //一般的模式匹配算法#include<stdio.h>int Index (char *s , char *t , int pos );//返回子串t在主串s中第pos个字符之后的位置( ...

  4. 数据结构求子串、非空子串、真子串、非空真子串数

    子串.非空子串.真子串.非空真子串,求数公式及例子 子串 非空子串 真子串 非空真子串 (1+n)∗n2+1\frac {(1+n)*n}{2}+12(1+n)∗n​+1 (1+n)∗n2\frac ...

  5. c语言题目关于欧姆定律,求有关欧姆定律的练习题

    满意答案 GUJDFGSG 2014.09.27 采纳率:50%    等级:8 已帮助:859人 一.单一选择题: 1.科学研究中常用到"控制变量法"."等效法&quo ...

  6. C语言 题目 1701: 数据结构-自顶向下的赫夫曼编码

    感觉还是自底向上简单,搜了搜答案貌似看懂了,自己手打了一遍,改写了某些看不懂的地方,又写了注释,希望对你有帮助(^∀^●)ノシ 题目描述 在本题中,我们将要讨论的是自顶向下的赫夫曼编码算法.从根出发, ...

  7. C语言 题目 1700: 数据结构-自底向上的赫夫曼编码

    查了好久信息,五花八门,这一题需要注意筛选出两个权值最小的结点后,将位序最小的放在左子树上,位序次小的放在右子树上. 题目描述 在通讯领域,经常需要将需要传送的文字转换成由二进制字符组成的字符串.在实 ...

  8. C语言 题目 1698: 数据结构-线索二叉树

    <大话数据结构>上的,大家可以参考一下  题目描述 在遍历二叉树的过程中,是按照一定的规则将二叉树中的结点排列成一个线性序列,从而得到二叉树中结点的先序序列或中序序列或后序序列.但是,当以 ...

  9. C语言 题目 1688: 数据结构-字符串插入

    看下图的代码块理清思路 题目描述 将一个字符串插入到另一个字符串当中.算法描述如下: 图:字符串插入算法 输入格式 输入只有一行,两个字符串(stra,strb)和一个整数 i.字符串仅由英文大小写字 ...

最新文章

  1. android 相对布局(RelativeLayout)
  2. 高等数学-关于第二类面积分的对称性问题
  3. JMeter插件之 BlazeMeter's XMPP----测试Openfire等
  4. What Is Text Mining?
  5. boost::python::import相关的测试程序
  6. boost的chrono模块最小时间点的测试程序
  7. 第三届Apache Flink 极客挑战赛暨AAIG CUP攻略发布!
  8. MVC View显示详解(RenderBody,RenderPage,RenderSection,Partial)
  9. STM32F0使用LL库实现PWM输出
  10. 平衡二叉查找树的构造与遍历(C++)
  11. 阿里合伙人名单曝光;百度网盘回应“不买会员限速”;库克:不担心苹果在华表现 | 极客头条...
  12. 华为机试HJ42:学英语
  13. spring data jpa 使用@Query 不确定参数查询
  14. 文件共享服务器(CIFS协议)
  15. 用百度大脑EasyDL平台轻松玩转AI
  16. 星级评价的代码php,JavaScript_使用jQuery实现星级评分代码分享,前面有一篇原生js实现星级评 - phpStudy...
  17. 文远知行杯广东工业大学第十六届程序设计竞赛 E爬塔
  18. 艾美捷SequENZ测序级改造型胰蛋白酶特异性和应用
  19. Microbiome:肠易激综合征的认知行为疗法诱导与胃肠道症状改善相关的脑-肠-微生物组轴的改变
  20. 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号 升序排序

热门文章

  1. tinymce_2_1_2汉化方法
  2. TensorFlow 深度学习第二版:6~10
  3. python库函数之scipy.signal——滤波器设计
  4. Git的tag标签管理
  5. Python:selenium淘宝页面自动搜索案例
  6. Java中的静态方法
  7. 【算法学习笔记十】NP问题
  8. 开篇词:我为什么要写这个专栏?
  9. 阅读Qatten:A General Framework for Cooperative Multiagent Reinforcement Learning
  10. python对图像中的人脸进行画框(人脸的位置数据记录在记事本文件中)