摘要:
kmp被分类成基于前缀搜索的匹配算法,把模式串(要寻找的串)当作一个滑动窗口在匹配串上滑动,匹配顺序是从左到右。不论是基于前缀搜索,基于后 缀搜索,还是子串搜索,每次失配向后移动多个字符好像是这些单串匹配算法的共同特点。kmp的思想是每次失配或者匹配成功进行下一次匹配的时候,不像暴力 那样只移动一个字符之后重模式串头部匹配,而是每次最优的向后移动多个字符并且之后可以从失配的地方开始匹配。 为了实现这个,kmp初始化了每个模式串前 缀的最大边界,即代码中的nextjmp[],存的是边界作为模式串前缀的末尾下标。所谓字符窜的边界,是指既是字符窜的前缀又是字符窜的后缀的真子串 (不能是本身,否... 阅读全文