KMP算法 -- next解釋
Contents
KMP 基本概念
一種用來字符串匹配的算法 一些定義:
- s[] 為主字串 , p[] 是匹配串 , 即可以理解成p是否是s的子字串
- 前綴:包含首位字符但不包含末位字符的子字串; 後綴:包含末位字符但不包含首位字符的子字串
- 部分匹配值 : 前綴與後綴最長共有長度
- next[] 存的是每個下標對應的部分匹配值
- 核心思考:每次匹配失敗時,把p串往後移動至next對應的值
next的含義與模擬
字串從1開始存,next[i], 是p[1,i]中前綴和後綴相同的最大長度(部分匹配值), 定義 next[1] = 0 例如:
|
|
求next陣列的code
|
|
匹配過程:
|
|