




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章 串,第四章 串,4.1 串类型的定义4.2 串的表示和实现4.3 串的模式匹配算法,定义: 或称为字符串,是由零个或多个字符组成的有限序列,一般记为s= a1a2an (n=0)其中s是串的名,用双引号括起来的字符序列是串的值;ai(1=i 0) / if return 0; / S中不存在与T相等的子串 / Index,n = StrLength(S); m = StrLength(T); i = pos;,while ( i 0) printf(st1st2n); if(k0) printf(st1 0) n = StrLength(S); m = StrLength(T); i = pos; while ( i m,T 串,一、简单算法,先比较模式串的第一个字符, 再比较模式串的最后一个字符, 最后比较模式串中从第二个 到第 n-1 个字符。,二、首尾匹配算法,int Index_FL(SString S, SString T, int pos) sLength = S0; tLength = T0; i = pos; patStartChar = T1; patEndChar = TtLength; while (i = sLength tLength + 1) if (Si != patStartChar) +i; /重新查找匹配起始点 else if (Si+tLength-1 != patEndChar) +i; / 模式串的“尾字符”不匹配 else return 0; ,检查中间字符的匹配情况,k = 1; j = 2; while ( j tLength / 重新开始下一次的匹配检测,KMP算法的时间复杂度可以达到O(m+n),三、KMP(D.E.Knuth, V.R.Pratt, J.H.Morris) 算法,KMP算法:每一趟匹配过程中出现不等时,不需回溯指针,而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远的距离后,继续比较.,KMP算法示意图,主串 a b a b c a b c a c b a b模式串 a b c a c,第一趟匹配 a b a b c a b c a c b a b,a b c,i=3,j=3,第二趟匹配 a b a b c a b c a c b a b,a b c a c,i=7,j=5,第三趟匹配 a b a b c a b c a c b a b,a b c a c,i=10,j=5,S s1 s2 si-j+1 si-j+2 .si-k+1 si-k+2 si-1 si sn P p1 p2 p3 pj-k+1 pj-k+2 pj-1 pj, P向右滑动 p1 p2 pk-1pk,由p1 p2 .pk-1= Si-k+1 Si-k+2 .Si-1pj-k+1 pj-k+2 .pj-1= Si-k+1 Si-k+2 .Si-1推得 p1 p2 .pk-1 = pj-k+1 pj-k+2 .pj-1,nextj仅与模式串相关,表明当模式串中第j个字符与主串中相应字符匹配“失效”时,在模式中需重新和主串中该字符进行比较的字符的位置,nextj= 模式串前段p1 pj-1中头尾相同 的最长头串或尾串的长+1,0 j =1nextj= maxk|0kj , p1 pk-1 =pj-k+1pj-1 1 其他情况,next0=0; next1=1; next2=1;next3=2; next4=2; next5=3next6=1; next7=2;,int Index_KMP(SString S, SString P, int pos) / 1posStrLength(S) i = pos; j = 1; while (i P0) return i-P0; / 匹配成功 else return 0; / Index_KMP,穷举的模式匹配算法时间代价: 最坏情况比较n-m+1趟,每趟比较m次,总比较次数达(n-m+1)*m 原因在于每趟重新比较时,目标串的检测指针要回退。改进的模式匹配算法可使目标串的检测指针每趟不回退。 改进的模式匹配(KMP)算法的时间代价: 若每趟第一个不匹配,比较n-m+1趟,总比较次数最坏达(n-m)+m = n 若每趟第m个不匹配,总比较次数最坏亦达到 n,如何求nextj值:j=1, nextj=0设nextj=k, 存在关系 (k nextj+1=nextj+1 (2)若 pkpj, 则 p1 p2 .pk pj-k+1 pj-k+2 .pj需往前回朔,这实际上也是一个匹配的过程,不同在于:主串和模式串是同一个串,void get_next(SString / get_next,还有一种特殊情况需要考虑:例如: S = aaabaaabaaabaaabaaab T = aaaabnextj= 01234,nextvalj=00004,void get_nextval(SString / get_nextval,4.4 串应用,文本编辑建立词索引表,小
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宠物美容师高级面试题
- 2025年药物滥用公共卫生安全教育题及答案
- 2025年人际关系心理学考试试题及答案解析
- 2025年宠物动物营养学初级考试重点题
- 2025年建筑工程师执业资格考试试题及答案解析
- 2025年家政服务管理师职业资格考试试题及答案解析
- 2025年安全生产培训题库及模拟测试
- 2025年电子竞技行业入门初级面试预测题解析
- 2025年养老机构等级评定预测题
- 2025年公共关系执行师专业知识考试试题及答案解析
- 充电桩知识培训课件
- 人工智能智能客服系统
- 个人安全管理工作存在的不足及整改措施
- 公司登记(备案)申请书
- 八下政治全册思维导图
- 供水管网工程监理实施细则
- 科研伦理与学术规范-期末考试答案
- 2024年秋季学期人教版七年级上册历史全册教学课件(新版教材)
- 化学-安徽省1号卷A10联盟2025届高三上学期8月开学摸底考试试题和答案
- 创业大赛承办服务投标方案(技术方案)
- JGJ/T235-2011建筑外墙防水工程技术规程
评论
0/150
提交评论