天天看点

KMP&Boyer-Moore

 KMP算法是通过分析子串,预先计算每个位置发生不匹配的时候所需移动的下一个位置,直到达到字符串的末尾。KMP&Boyer-Moore算法是通过"字符串"与"搜索词"头部对齐,从尾部开始比较的一种方法。

   对于两个字符串:

1.用短的字符串的第一个字符开始依次与另外一个字符串进行比较

2.如果相同,继续比较下一位置的字符,否则,向后移动一定的距离(已经匹配上的字符个数-已经匹配字符串前缀和后缀对称的位数)

3.直到字符串的最后一位

  各种文本编辑器的"查找"功能(Ctrl+F),就是采用的这种算法。

  算法思想却是很简单啊!与KMP不同,它是按照字符串的反向进行比较。

1.用短的字符串的第一个字符与另外一个字符串的起始位置对齐,比较最后一个字符

2.如果相同,继续比较前一个位置的字符,否则,移动一定的距离(不匹配字符个数-不匹配字符在短字符串中的上一次出现的位置)

本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/p/3307751.html,如需转载请自行联系原作者

继续阅读