《数据结构》课件4_1串.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.1 串及其运算 4.2 串的存储表示 4.3 串的模式匹配算法 穷举算法、KMP算法、改进的KMP算法; next数组、改进next数组 朴素算法--------穷举的模式匹配过程 * 串是由零个或多个字符组成的有限序列,一般记为 s=“a1a2…an”(n?0) 其中,s是串名,用单引号(也可以是用双引号括起来的) 括起来的字符序列是串的值。ai可以是字母、数字或其他字符;串中字符的个数n成为串的长度。 4.1 串及其运算 子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串相应地称为主串。 位置:字符在序列中的序号。子串在主串中的位置则以子 串的第一个字符在主串中的位置来表示。 相等:两个串的长度相等,并且对应位置的字符都相等。 注意区分空串与空格串的区别。 串的逻辑结构和线性表的区别: 1. 串的数据对象约束为字符集。 2. 线性表的基本操作大多以“单个元素”为操作对象,而 串的基本操作通常以“串的整体”作为操作对象。 对于串可以定义以下运算: 1. 置串为一个空串; 2. 判断一个串是否为空串 3. 求一个串的长度; 4. 将两个串拼接在一起构成一个新串; 5. 在一个串中,求从串的第i个字符开始连续j个字符所构成的子串; 6. 则可求串S2在串S1中第一次出现的位置。 7、去掉首尾空格 8、全部大写、全部小写 9、分割串,得到串数组 10、和另外一个串是否相等 1. 定长顺序表示 4.2串的存储表示 算法4.1 求顺序表示的串的子串 其它操作 2. 变长顺序表示 3. 串的块链存储表示 模式匹配:子串(又称模式串)在主串中的定位操作。 4.3 串的模式匹配算法 定义 在串中寻找子串(第一个字符)在串中的位置 词汇 在模式匹配中,子串称为模式,串称为目标。 示例 目标 T : “Beijing” 模式 P : “jin” 匹配结果 = 3 朴素的模式匹配算法 朴素的模式匹配算法问题 S3456=T1234 S7≠T5 穷举法的过程如下: (1)i回到4,j回到1,比较S4是否等于T1,不相等 (2)比较S5是否等于T1,不相等 (3)去比较S6是否等于T1,不相等 可以证明,第一步和第二步必定不等 改进:i不回溯,只将j回溯到2 KMP算法 由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现的。简称KMP算法。 提高匹配效率 i指针不回溯 利用已匹配的信息定位j指针 next数组 直观算法(下标从1开始): (1) next[1] = 0,next[2]=1 (2) next[j] = k+1的情况为:T[1..k]=T[j-k....j-1] 注意:kj 迭代算法(下标从1开始): (1) next[1] = 0,next[2] = 1 (2) j从2开始,计算next[j+1]: 令k=next[j],如果T[j] == T[k],则next[j+1]=k+1;如果T[j]!=T[k],令k’=next[k],一直迭代,直到T[j]==T[k’]或者k’为0,next[j+1]=k’+1 *

文档评论(0)

autohhh + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档