首先了解一个概念:前缀和后缀
以DBDCD为例:
前缀:D
DB
DBD
DBDC
后缀:D
CD
DCD
BDCD
首先在该算法中具有一个概念:部分匹配值,部分匹配值为该字符串前缀与后缀的重合数量,还是以上例子,DBDCD的部分匹配值为 1
我们这里先知道这个概念,后面会用到。
正题开始:
在ABCDABCCABCDEEEEE中查找ABCDE
ABCDABCCABCDEEEE
步骤一:
ABCDABCCABCDEEEEE
ABCDE
首先匹配ABCD,但是E不匹配,ABCD的部分匹配值为0,向后移(4-0)也就是4位。
移动距离 = 已经匹配的字符数量 – 已经匹配的字符串部分匹配值 |
步骤二:
ABCDABCCABCDEEEEE
ABCDE
此时匹配ABC,D无法匹配,根据上述算法,后移3位
步骤三:
ABCDABCCABCDEEEEE
ABCDE
后移
步骤四:
ABCDABCCABCDEEEEE
ABCDE
此时完全匹配完成!
总结:在此过程中,计算部分匹配值就是为了避免重复匹配一定匹配不上的字符。