KMP算法
KMP算法主要难点在next数组上,next数组是用来储存最大前后缀的。在开始给next数组赋值时,先定义i和j其中i赋值为0,j赋值为-1。

a为被查找的字符串,b为待查找的字串。在未到b字符串的最后时进行next数组的赋值,最开始的赋值j等于-1所以不管两字符串中是否有相同字符都会进行next数组的赋值若在判断第二个字符及以后的字符时仍没有相同字符则会在else中不断将j赋值为-1来进行被查找字符串中被查找字符的后续更替。

next数组复制完后、便进行字符串的搜索判断。由于当两字符串中有相同字符后j就不再为-1,所以这时如果出现不同的字符就会至今进入else中通过next数组给j赋值,为j = next[j],next数组的实现本身也是一种数学规律。当j等于b即代查找字符的长度后就会跳出该循环输出OK。

浙公网安备 33010602011771号