- 4
- 0
- 约7.8千字
- 约 36页
- 2016-08-21 发布于重庆
- 举报
第3章串
int Index-again(char S[ ], char T[ ]){ succ=0; for(i=1;(i=S[0]-T[0]+1 succ==0);++i){ j=1; while(j0 j=T[0]) j=(S[i+j-1]==T[j])?j+1:0; if(jT[0]) succ=i; } return succ; } S=‘s1…si-j+1…si-k+1… si-1 si …sn’ 前面定义的next函数在某些情况下尚有缺陷.例如:S=“aaaab”, T=“aaabaaaab”,当i=4,j=4时,next[j]还需要进行i=4,j=3; i=4,j=2; i=4,j=1三次比较。所以我们可以对计算next的算法作如下修正,而匹配算法IndexKMP不变。 void GetNext(char T[ ], int next[ ]) { next[1]=0; j=1; k=0; while (jT[0]) if ((k==0)| |(T[j]= =T[k])) { j++; k++; if(T[j]!=T[k]) next[j]=k; else next[j]=next[k]; } else k=next[k]; } 第3章 特殊线性表——串 在串S和串T中分别设比较的起始下标i和j; 2. 循环直到S中所剩字符长度小于T的长度或T中所有字符均比较完毕 2.1 如果S[i]=T[j],继续比较S和T的下一个字符;否则 2.2 将j向右滑动到next[j]位置,即j=next[j]; 2.3 如果j=0,则将i和j分别加1,准备下一趟比较; 3. 如果T中所有字符均比较完毕,则返回匹配的起始下标;否则返回0; KMP算法用伪代码描述 int IndexKMP(char S[ ], char T[ ]){ i= j=1; while(i=S[0]-T[0]+1 j=T[0]) if(j==0||S[i]= =T[j]) //继续比较后续字符 {j=j+1;i=i+1;} else j=next[j]; //模式串向右移动 if(jT[0]) return i-T[0]+1; //匹配成功 else return 0; } //IndexKMP * 第3章 特殊线性表——串 3.3.1 串的逻辑结构 1. 串的定义 串是零个或多个字符组成的有限序列 。 空格串:只包含空格的串。 串的长度 :串中所包含的字符个数。 空串:长度为0的串。 空串记作 “ ”; 非空串通常记作:S=“s1 s2 …… sn” 其中:S是串名;双引号是定界符 ;双引号引起来的部分是串值 。si(1≤i≤n)是一个任意字符。 第3章 特殊线性表——串 子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串 。 子串在主串中的位置:子串的第一个字符在主串中的序号 。 S1=ab12cd S2=“ab12 S3= S4=φφφ “ 串的长度? 第3章 特殊线性表——串 3. 串的比较 串的比较是通过组成串的字符之间的比较来进行的。 给定两个串: X=x1x2…xn Y=y1y2…ym 则当n=m且x1=y1,…,xn=ym时,称X=Y; 当下列条件之一成立时,称X<Y: ⑴ n<m,且xi=yi(i=1,2,…,n); ⑵ 存在某个k≤min(m,n),使得xi=yi(i=1,2,…,k-1),xk<yk。 2. 串的抽象数据类型定义 串的基本操作通常以“串的整体”作为操作对象。 第3章 特殊线性表——串 ⑴ StrLength (s):求串s的长度。 ⑵ StrAssign (s1,s2):串赋值,将s2的串值赋值给串s1。 ⑶ StrConcat (s1,s2,s):串的连接,将串s2放在串s1的后面连接成一个新串s。 ⑷ SubStr (s,i,len):求子串,返回从串s的第i个字符开始取长为 len 的子串。 第3章 特殊线性表——串 ⑸ StrCmp (s1,s2):串比较,若s1=s
您可能关注的文档
最近下载
- Q_NSR P03-2018铝排设计规范最新.docx VIP
- 2025年福建省粮食行业职业技能竞赛(粮油保管员)备赛试题库及答案.docx VIP
- 高空作业脚手架施工方案.docx VIP
- 2025年1月云南省普通高中学业水平考试英语(含答案) .pdf VIP
- 福建省粮食行业职业技能竞赛(粮油保管员)备赛试题(附答案).doc VIP
- 医院纪委办2026年工作计划.docx VIP
- Honeywell霍尼韦尔烧嘴控制器TBC2800用户手册.pdf
- 2024-2025学年江苏省苏州市四年级上学期语文期末试卷及答案.docx VIP
- 内浮顶储罐检修安全规范培训课件.pptx VIP
- 2026天津市和平区选聘区管国有企业管理人员6人笔试考试备考试题及答案解析.docx VIP
原创力文档

文档评论(0)