0
点赞
收藏
分享

微信扫一扫

【数据结构5】第四章 串模式匹配算法(BF算法、KMP算法)next[i]、nextval[i]

棒锤_45f2 2022-04-13 阅读 87

第四章 串、数组、广义表

目录

4.1 串

串的基本概念:

例题分析:串的举例

串的比较

串和线性表的区别:

知识点1:串的表示:(存储结构)

如何表示串的长度?

串的链式存储表示

知识点2:串的模式匹配:

什么是模式匹配:

模式匹配算法:

方法1:BF算法

BF算法步骤:

方法2:KMP算法

小结1:next[j]函数的意义

小结2:回溯模式串

计算next[j]的方法

KMP算法步骤

KMP算法描述

获取next[j]值的算法描述

求next[j]函数例题:

例题一:

例题二:

例题三:

求nextval[ ]

nextval[j]( 注意要先求next[j]才能求nextval[j])

写nextval[j]

例题:求next[j]和nextval[j]


4.1 串

由零个或多个字符组成的有限序列。单引号括起来的字符序列;

串的基本概念:

串的长度:串中字符的数目。

空串:含零个字符的串。

例题分析:串的举例

串的比较

串和线性表的区别:

知识点1:串的表示:(存储结构)

如何表示串的长度?

 

串的链式存储表示

知识点2:串的模式匹配:

什么是模式匹配:

给定主串S和模式串T,在S中寻找T的过程称为模式匹配。

如果匹配成功,返回T'在S中的位置,如果匹配失败,返回0。

模式匹配算法:

BF算法、KMP算法

主串S 和 模式串T(又称 子串)

方法1:BF算法

BF算法步骤:

方法2:KMP算法

定义 next[j]函数

小结1:next[j]函数的意义

小结2:回溯模式串

计算next[j]的方法

KMP算法步骤

KMP算法描述

获取next[j]值的算法描述

求next[j]函数例题:

例题一:

例题二:

答案:

例题三:

答案:

求nextval[ ]

nextval[j]( 注意要先求next[j]才能求nextval[j])

写nextval[j]


J= 1  a 第一个nextval  写0


j = 2 第二个开始  【a】

首先 看next[j]的值,next[2] = 1;看j=1的模式字符是a,与j=2 的字符  相等:写next[1]的值0 = nextval[2]。


(跳过j = 3,4懂了的话,三自然懂了)

j = 4  从第四个开始 【 a】

首先 看next[j]的值,next[4] = 3;看j=3 的模式字符是a,与j=4 的字符相等;相等 继续往前看

next[3] = 2;看j=2 的模式字符是a,与j=4 的字符相等;相等 继续往前看

next[2] = 1;看j=1 的模式字符是a,与j=4 的字符相等;相等 继续往前看,前面没了,写最后的next[1]的值0= nextval[4]中


j = 5  从第5个开始  【b】

next[5] = 4,j = 4 的模式串是a,与b不想等,直接写next[5] = nextval[5]


不相等写 next[j]的值


例题:求next[j]和nextval[j]

答案:

 

 

举报

相关推荐

0 条评论