第9章 DS04_字符串1.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文档。上传文档
查看更多
王亚沙 2010.9~2011.1 基于 张铭,王腾蛟,赵海燕三位老师的胶片修改;4.1 字符串基本概念 4.2 字符串的存储和操作实现 4.3 字符串的模式匹配;4.1基本概念 ;概念和特征;4.1.1 字符编码;单字节(8 bits) 采用ASCII码对128个符号(字符集charset)进行编码 一个字节,最高位为0 在C和C++中均采用 其他编码方式 GB2312-80 GBK GB18030 BIG5 CJK UNICODE Unicode.org标准(1.0标准:16位,2.0标准20位) ISO 10646标准 Unicode的编码方式 UTF-8(1~6字节变长码) UTF-16;4.1.2 字符编码顺序;4.1.3 字符串抽象数据类型; 这些函数都是什么功能? 你猜你猜你猜猜猜!!;4.1 字符串基本概念 4.2 字符串的存储和操作实现 4.3 字符串的模式匹配;4.2.1存储结构选择策略;4.2.2基本存储访问形式(C语言风格);错误2 char s10[]=hello; char s11[]=hi; s11=s10; or s10=S11;;字符串标准函数(C语言风格);例子;函数实现举例;4.2.3 封装为对象的存储访问形式(C++风格);STL中的string类型;对字符串的封装;string对象的构造;对赋值的支持;重载赋值操作符;对变长字符串的支持;赋值操作导致字符串内存首地址变化;抽取子串操作的实现;cont.;图示;4.1 字符串基本概念 4.2 字符串的存储和操作实现 4.3 字符串的模式匹配;4.3.1概述;两种匹配方式;本课程讨论的字符串模式匹配:问题定义;模式匹配的算法;4.3.2朴素的模式匹配算法;朴素算法思路图示;朴素算法示例;朴素算法实现;朴素算法的效率分析;最佳情况(且匹配成功);最佳情况(且匹配不成功);模式与目标的每一个长度为M的子串进行比较;朴素算法效率低的原因:回溯;4.3.3 KMP算法;从一个例子开始;从一个例子开始;寻找一个无回溯的匹配算法,关键在于匹配过程中,一旦pi 和Tj比较不等时,即 substr(P,1,i-1) = substr(T, j-i+1,i-1) 且 pi ? Tj 要能立即确定右移的位数和继续比较的字符,即该用P中的哪个字符和Tj进行比较? 如何定位? 保留之前比较的结果? 若把这个字符记为pk, 显然有ki, 且不同的i, 其 k值不同;Knuth-MorriT-Pratt (KMP)算法发现每个字符对应的该k值仅仅依赖于模式P本身,而与目标对象T无关 1970年,S. A. Cook在进行抽象机的理论研究时证明了在最差情况下模式匹配也可在N+M时间内完成 此后,D. E. Knuth 和V. R. Pratt以此理论为基础,构造了一种方法来在N+M时间内进行模式匹配,与此同时,J. H. Morris在开发文本编辑器时为了避免在检索文本时的回溯也得到了同样的算法。 此即KMP算法。;T T0 T1 … Tj-i-1 Tj-i Tj-i+1 Tj-i+2 … Tj-2 Tj-1 Tj … Tn-1 ‖ ‖ ‖ ‖ ‖ ? P p0 p1 p2 … pi-2 pi -1 pi 则有 Tj-i Tj-i+1 Tj-i+2 … Tj-1 = p0 p1 p2 …pi-1 (1) 如果 p0 p1 …pi-2 ? p1 p2 …pi-1 (2) 则立刻可以断定 p0 p1 …pi-2 ? Tj-i+1 Tj-i+2 … Tj-1;同样,若 p0 p1 …pj-3 ? p2 p3 …pj-1 则再下一趟也不匹配(右移2位),因为有 p0 p1 …pj-3 ? Ti-j+2 Ti-j+3 … Ti-1 直到对于某一个“k”值,使得 p0 p1 …pk ? pj-k-1 pj-k …pj-1 且 p0 p1 …pk-1 = pj-k pj-k+1 …pj-1 则 p0 p1 …pk-1 = Ti-k Ti-k+1 … Ti-1 Ti ‖ ‖ ‖ ?

文档评论(0)

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

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

1亿VIP精品文档

相关文档