版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内容提要,5.1 串及其操作 串的定义 串的基本操作 5.2 串的表示和实现 顺序存储表示 串的块链存储表示 5.3 串的模式匹配算法 求子串位置的定位函数 模式匹配的一种改进算法 5.4串操作应用举例 文本编辑 建立词索引表,5.1 串及其操作,1、串的逻辑结构定义 串(String)(或字符串):是由零个或多个字符组成的有限序列。一般记为:s=a1a2an (n0) 其中,s是串的名,用单引号括起来的字符序列是串的值;ai(1 i n)可以是字母、数字或其他字符;串中字符的数目n称为串的长度。零个字符的串称为空串(null string),它的长度为零。(空串与空格串的区别) 子串:串中任
2、意个连续字符构成的子序列 串相等:当且仅当这两个串的值相等。也就是说,只有当两个串的长度相等,并且各个对应位置的字符串都相等时才相等。,串及其操作(contd),2. 串的基本操作 串的基本操作: 赋值 复制 比较 求长度 串连接 子串定位 取子串 串插入 串删除 串替换,5.2 串的表示和实现,1、字符串的存储表示 (1)顺序存储 利用静态数组存放字符串 (2)堆分配存储 利用动态分配的内存存放字符串 (3)链式存储 块链结构:#define N 5 /N决定存储密度 typedef struct strnode char sdataN; struct strnode *next; STRN
3、ODE;,串的表示和实现(contd),(3)链式存储 块链结构:#define N 5 /N决定存储密度 typedef struct strnode char sdataN; struct strnode *next; STRNODE;,串的表示和实现(contd),2、字符串基本操作的实现 (1)串的联接 利用截尾法进行处理 (2) 求两个串的最长公共子串,串的表示和实现(contd),(2)求两个串的最长公共子串,5.3 串的模式匹配算法,1、字符串模式匹配,普通算法,算法思想: 每当一趟匹配过程中出现字符比较不等时,不需回溯i指针,而是利用已经得到的“部分匹配”的结果将模式向右“滑动
4、”进可能远的一段距离后,继续进行比较。,串的模式匹配算法(contd),2. 字符串模式匹配的KMP算法,算法思想: (1)对于象1234abcd这样的模式串,KMP算法与普通算法没有什么不同,但对于123a123b这样的模式串,KMP的算法就尽显优势。也就是说,如果模式串本身包含有自身重复子串,KMP算法会更快。 (2)与普通算法相比,KMP算法在比较失败时,并没有一切推倒重来,而是巧妙利用的模式串“包含重复子串”的特征,减少了比较的次数。,串的模式匹配算法(contd),(3)用大写字母表示子串,小写字母表示串中的字符,假设当比较操作进行到主串S的下标j处时,比较失败。这是模式串T的当前字
5、符的下标时k,并且T0.k=P(Tm)P(Tk),Tm!=Tk, 也就是说,比较失败之前的模式串具有重复子串。这时我们可以将S看成是S=XPaP(Sj)。 面要做的不是将beginpos+,推倒重来,而是直接将Tm与Sj进行比较。这种操作称为模式串的滑动。每当比较失败就滑动一次,这样可以有效减少比较次数。,(4)关键一点是滑动到哪里比较合适,也就是说,如何确定m的值。m被称为k的next值。 (5)如果已知k的next值是m,k+1的next值如何求?这是解决问题的突破口,因为我们已知0的next值是1,1的next值是0.,能者为之,2. 字符串模式匹配的KMP算法,串的模式匹配算法(con
6、td),2. 字符串模式匹配的KMP算法,0 当 j=1时 nextj= Maxk|1kj且p1pk-1=pjj-k+1pjj-1 当此集合不空时 1 其他情况,j 1 2 3 4 5 6 7 8,模式串 a b a a b c a c nextj 0 1 1 2 2 3 1 2,5.4 串操作应用举例,1、文本编辑 文本编辑程序是一个面向用户的系统服务程序,广泛用于源程序的输入和修改,甚至用于报刊和书籍的编辑排版以及办公室的公文书信的起草和润色。 文本编辑的实质是修改字符数据的形式或格式。 各种文本编辑程序的功能强弱不同,但是其基本操作是一致的,一般都包括串的查找、插入和删除等基本操作。 文本编辑程序的设计:用户可以利用换页符和换行符把文本划分为若干页,每页有若干行。可以把文本看承是一个字符串,称为文本串,页则是文本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地使用权承包合同模板
- 2024年胸牌工牌项目调研分析报告
- 工程项目居间合同范本
- 2024年极轨气象卫星接收处理系统项目投资建议书
- 现代中国文论经典智慧树知到期末考试答案章节答案2024年浙江大学
- 全科医学(医学高级):儿童保健考试试题三
- 幼儿园手工制作教案:送伞
- 小学语文教学法智慧树知到期末考试答案章节答案2024年江西师范高等专科学校
- 渠道维护工考试:中级渠道维护工考点巩固
- 重庆市九龙坡区人才引进考试试题及答案
- 机械制造企业各管理人员及岗位安全生产责任制
- 生活质量综合评定问卷评分方法
- 计量论文-城镇人均可支配收入、旅游人数等因素对国内旅游业的影响
- 汽车修理厂服务承诺书
- PEP小学英语五年级上册《Unit 3 A Let’s talk》精品教案
- 传染病异常信息反馈制度
- 味精生产工艺
- 起搏器培训课件:C315传送导管内部培训
- PVB树脂生产建设项目可行性研究报告
- 合同范文 微信收费授权证明文件.doc
- 初二下学期期中考试家长会.ppt
评论
0/150
提交评论