KMP是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的。其中第一位就是《计算机程序设计艺术》的作者!! KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。
1.next数组的计算方法
1.先求对应位置前面的F字串
2.求F字串中最长且相等的前缀Fl与后缀字串Fr,并求出Fl或者Fr的长度
3.next对应位置的数据为Fl长度加1
计算如下图所示