第四章 串、数组、广义表
目录
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]
答案: