本章讨论的是基于KMP算法(KMP即Knuth-Morris-Pratt)的串的模式匹配问题,什么是模式匹配,请参考前一章“字符串的模式匹配”。
查找算法实例
让我们用一个实例来演示这个算法。在任意给定时间,本算法被两个整数m和i所决定:
- m代表主文字符串S内匹配字符串W的当前查找位置,
- i代表匹配字符串W当前做比较的字符位置。
图示如下:
我们从W与S的开头比较起。我们比对到S[3](=' ')时,发现W[3](='D')与其不符。接着并不是从S[1]比较下去。我们已经知道S[1]~S[3]不与W[0]相合。因此,略过这些字符,令m = 4以及i = 0。
如上所示,我们检核了"ABCDAB"这个字符串。然而,这与目标仍