[C算法]006-KMP算法
求 next 数组
按照 next 数组访问字符串下标的做法求 next 数组
以 a b a a b c 为例,next[] 数组下标从 1 开始
首先,next 数组以 0 1 开头,i 是当前求的下标,j 是寻找要匹配下标。
next={0,1},求next[3],i=2,j=next[i],就是j=1i=2,j=1,对比 ,匹配失败 ❌- 然后
j=next[j],就是j=0 - 触发
j=0,直接next[3]=1。
next={0,1,1},求next[4],i=3,j=next[i],就是j=1i=3,j=1,对比 ,匹配成功 ✅,所以next[4]=j+1,就是2。
next={0,1,1,2},求next[5],i=4,j=next[i],就是j=2i=4,j=2,对比 匹配失败 ❌- 然后
j=next[j],就是j=1。 - 然后再对比
p_4(a)==p_1(a)匹配成功 ✅,所以next[5]=j+1,就是2。
next={0,1,1,2,2},求next[6],i=5,j=next[5],就是j=2i=5,j=2,对比 ,匹配成功 ✅,所以next[6]=j+1就是3。
next={0,1,1,2,2,3}计算完毕。
- 标题: [C算法]006-KMP算法
- 作者: Lucas
- 创建于 : 2026-03-26 15:55:48
- 更新于 : 2026-03-28 11:47:54
- 链接: https://darkflamemasterdev.github.io/2026/03/26/C算法-006-KMP算法/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论