上一篇博客写了BF算法的Javascript实现思路。
网页地址:Javascript实现BF算法
KMP Substring Search
kmp算法的精髓就在于next数组,从而达到跳跃式匹配的高效模式。而next数组的值是代表着字符串的前缀与后缀相同的最大长度,(不能包括自身)。
"前缀"指除了最后一个字符以外,一个字符串的全部头部组合;
"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。
KMP基本思想
来自知乎网友:逍遥行
角色:
甲:abbaabbaaba
乙:abbaaba
乙对甲说:「帮忙找一下我在你的哪个位置。」
甲从头开始与乙一一比较,发现第 7 个字符不匹配。
要是在往常,甲会回退到自己的第 2 个字符,乙则回退到自己的开头,然后两人开始重新比较。[1]这样的事情在字符串王国中每天都在上演:不匹配,回退,不匹配,回退,……
但总有一些妖艳字符串要花出自己不少的时间。
上了年纪的甲想做出一些改变。于是甲把乙叫走了:「你先一边玩去,我自己研究下。」</