数据结构第章串.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构第四章 串 重庆一中 葛静 串的基本概念 串:字符串,是一种特殊的线性表,它的数据仅 由一个字符组成,计算机非数值处理的对象经常 是字符串数据。 例如:’I love programs!’ 字符串的定义 串的定义: var s:string; 字符串长度255 Var s:string[100]; 字符串长度100 串的数组实现: Type string=recordch:array[1..maxlen]of char;curlen:integer;end; 串的指针实现: Type tlink=recordch:char;next:^tlink;end;string=^tlink; 串的相关概念 串的长度:串中的字符个数n称为串的长度。 空串:一个串只有0个字符,长度为0。 子串:串中连续的任意个字符的子序列为子串,空串是任意串的子串。 两串相等:对于串s1,s2, 如果s1是s2的子串,且s2是s1的子串,则两串s1,s2相等。 串的运算 1、串的连接,即串的加法运算 2、求子串S=copy(s1,i,j),求串s1中第i位开始 的,连续j个字符组成的子串。 3、删除子串的操作:删除s中第i位开始的连续j个字符。S=delete(s,i,j) 4、插入子串的操作:将s1插入s的第i位之后。 Insert(s1,s,i); 5、求子串的位置:求串s1第一次出现在s的哪个位置。Result=pos(s1,s) 6、求字符串s的长度:len=length(s) 7、将数值转换为字符串str(value,s) 例如:value=12345,str(value:6,s),s=‘ 12345’ Value=3.14e4,str(value:10:0,s), s=‘31400’ Value=3.14e4,str(value:10:2,s), s=‘ 31400.00’ 串的运算 8、将字符串转换为数值 Val(s,value,code)把字符串表达式s转换成对应 的整型值或实型值。Code为错误代码,成功为 0,不成功则返回第一个出错字符的位置。 例如:s=‘1234’,转换后value=1234,code=0 S=‘123a’,转换后value无意义,code=4 S=‘3.14e4’,转换后value=31400,code=0 串的模式匹配问题 简单说:主串T[1..n],模式串P[1..m],问T串是 否包含P串?包含,则返回模式串在主串中的起 始位置。 如:T=‘I love pascal!’,P=‘pascal’,T包含P,P在 T的第6位首次出现。 抽象地说:主串T[1..n],模式串P[1..m],找到 所有的S∈[1..n-m+1],满足对于X ∈[1..m],都有 T[s+x-1]=P[x]。 串的模式匹配问题朴素算法从主串的第一个字符起合模式串的第一个 字符进行比较,若相等则进一步比较二者的后续 字符,否则从主串的第二个字符起再重新和模式 串的第一个字符比较,依此类推,直至模式串和 主串中的一个子串相等,则匹配成功,否则称匹 配失败。 串的模式匹配问题朴素算法 var t,p:string; n,m,i,j,k:integer; begin readln(t); readln(p); n:=length(t); m:=length(p); i:=1; j:=1; While (i=n-m+1) and(j=m) doif t[i]=p[j] then begin inc(i); inc(j) endelse begin i:=i-j+2; j:=1; end; If jm then writeln(i-m) Else writeln(‘no!’); End; 时间复杂度O(nm) KMP算法由Kunth、Morris和Pratt提出的一个模式匹配 算法,简称为KMP算法。其基本思想是:不象朴素算法中每次重新比较,充 分利用已经得到的部分匹配结果,将模式向右滑动尽可 能远的一段距离,接着继续进行比较。KMP算法 例1:T=‘tomatogoodtomatobad’P=‘tomatoisbad’ 解: KMP算法 O(m+n) 例2:T=‘abababaababacb’, P=‘ababacb’ 解: KMP算法j:=0; for i:=1 to n do beginwhile (j0) and (P[j+1]T[i]) do j:=Pr[j];if P[j+1]=T[i] then j:=j+1;if j=m thenbeginwriteln(‘Pattern occurs with shift ’,

文档评论(0)

fmm40085 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档