KMP字符串匹配算法

对于在一个长字符串中搜索匹配一个短字符串的方法,KMP算法首先将子字符串第一个字符与长字符串对比,依次向下,

直到对应字符不同。这时候

 一般的方法是从头来过,重新挨个对比。而KMP算法则是利用已知信息将待对比部分右移,右移的值为:已对比字符串长度-部分匹配值

在这里是6-2,其中部分匹配值为已匹配字符串的前缀与后缀的最大共有子元素长度。

前缀:去除最后一个字符串后剩下的部分,在这里子元素为:A,AB,ABC,ABCD,ABCDA

后缀:去除第一个字符串后剩下的部分,在这里子元素为:B,AB,DAB,CDAB,BCDAB

通过右移部分减少了字符串的匹配次数。

原文地址:https://www.cnblogs.com/cxxBoo/p/13903853.html