且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

字符串匹配算法之KMP&Boyer-Moore

更新时间:2022-09-10 13:03:13

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

KMP

   对于两个字符串:

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

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

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

 

Boyer-Moore

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

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

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

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

参考:

http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html

字符串匹配算法之KMP&Boyer-Moore
本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 *** 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012