字符串搜索算法(一)Boyer-Moore算法
来源:互联网 发布:北京建筑软件培训 编辑:程序博客网 时间:2024/06/05 10:54
Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法。它由Bob Boyer和J Strother Moore设计于1977年。此算法仅对搜索目标字符串(关键字)进行预处理,而非被搜索的字符串。不同于朴素模式(brute-force search)的逐个字符对比,它不需要对被搜索的字符串中的字符进行逐一比较,而会跳过其中某些部分。
这里使用图说明下,BM算法是怎么跳过某些字符的。假设我们要在text表示的字符串中搜索pattern表示的字符串。这里使用了原论文的一个字符串例子。
BM算法首先需要text串与pattern串左侧对齐,然后是从pattern的最右侧的字符开始,指针是从右向左移动,依次与text串中字符匹配。
如图左对齐后,首先T与F比较,F与T不匹配,同时观察发现,F不在pattern中,所以可以直接把pattern向后移动到F的后一个字符,并与之对齐。如下图:
移动之后,发现上图中-与F也不匹配,但是发现-存在于pattern串中。所以直接向后移动到两个字符串的-对齐的位置,如下图:
这个时候红框中的字符匹配,指针左移动。
这种情况与第一种情况一样,L不存在于pattern串中,所以pattern可以直接跳到text串的L字符后边。
此时,依次向左匹配,匹配成功。
Boyer, Robert S.; Moore, J Strother (October 1977). "A Fast String Searching Algorithm" . Communications of the ACM
http://www.inf.fh-flensburg.de/lang/algorithmen/pattern/bmen.htm
0 0
- 字符串搜索算法(一)Boyer-Moore算法
- Boyer-Moore字符串搜索算法
- Boyer-Moore字符串搜索算法
- 字符串搜索之Boyer-Moore算法
- 字符串搜索算法Boyer-Moore由浅入深
- 字符串匹配算法 Boyer-Moore
- 字符串匹配【Boyer-Moore算法】
- Boyer-Moore 字符串匹配算法
- grep之字符串搜索算法Boyer-Moore由浅入深
- grep之字符串搜索算法Boyer-Moore由浅入深
- 字符串搜索算法Boyer-Moore的Java实现
- 字符串搜索算法kmp与Boyer-Moore,java实现
- Boyer-Moore算法字符串查找算法
- 字符串匹配算法之 ---- Boyer-Moore 算法
- 字符串匹配算法,Boyer-Moore 算法
- 字符串:Boyer-Moore字符串查找算法
- 查找字符串之boyer-moore算法
- 阮一峰:字符串匹配的Boyer-Moore算法
- socket编程 单向服务端与客户端通信之简单协议,仅供参考
- linux从上电到到启动流程简要过程以及关键函数
- 在AWS上使用GPU实现分布式神经网络Distributed Neural Networks with GPUs in the AWS Cloud
- ie8文件上传onchange无效
- transform的使用纯代码方式
- 字符串搜索算法(一)Boyer-Moore算法
- 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”
- 当<div>中含有<img>时,<div>的高度比<img>的高度要多3px。如何解决?
- opengl纹理示例
- 【ZOJ 1976】 【POJ 1942】 Paths on a Grid
- GPRS核心网信息元素—MSISDN
- ssh注销系统时清空session
- HIbernate里session的delete()方法
- Troublesome Power Supply---2-SAT