☰
KMP算法——next数组预处理
2026/10/3 2:44:01 网站建设 项目流程

1.首先定模式串前两个的next值——0和1;

【注意】规定索引 i 从1开始;

2. 求next[i],i≥3:

(1)令j=nexti-1,j为待比较下标;待比较字符:模式串上一位字符Ti-1,对比字符:Tj;

(2)循环回退:当j≠0且Ti-1≠Tj,执行j=nextj;

(3)若Ti-1==Tj:nexti=j+1;

(4)若回退至j=0:nexti=1;

3.具体示例:以模式串abaabcac为例

(1)初始状态:索引1对应字符next[1]=0,

(2)索引2对应字符的next[2]=1;

(3)计算next[3]

①,

②,

③,执行回退

④,循环终止,

(4)计算next[4]

①,

② 对比,

③ 两字符相等,

(5)计算next[5]

①,

② 对比,;,回退

③ 对比,;字符相等

④

(6)计算next[6]

①,

② 对比,;字符相等

③

(7)计算next[7]

①,

② 对比,;,回退

③ 对比,;,回退

④,循环终止,

(8)计算next[8]

①,

② 对比,;字符相等

③

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询