目录
1、朴素模式匹配
2、KMP算法
2.1、核心思想:求出和模式串相匹配的next[]
作用:当j指向的模式串字符发生不匹配时,从next[]中找出j应该回退的位置
2.2、代码实现:
【注】next[]中设置的nex[1] == 0 是一个主串指针i要移动的边界条件。
2.3 求模式串的next数组
1、两个概念:
串的前缀:如图左,j=7时匹配失败,则后缀为主串的“abab”
串的后缀:如图左,j=7时匹配失败,则前缀为模式串的“abab”
2.4、练习
【注】next[0]与next[1]都是0和1
1、ababaa:
2、aaaab
2.5、代码分析
2.6、时间复杂度分析
三、张乃孝版求next
分析:张乃孝版求next[]可使用王道的比较法,
先找到最长相等前后缀长度但不用加1,考试要写基于改进的KMP算法,也就是要如图比较pk与pi的大小
next[0]为 -1,next[1不定]