字符串匹配
搬砖小工053
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串匹配算法 之 朴素字符串匹配
前言字符串匹配问题的形式定义:文本(Text)是一个长度为 n 的字符串:T;模式(Pattern)是一个长度为 m 且 m≤n 的字符串:P;T 和 P 中的元素都属于有限的字母表 Σ 表; 有效位移 (Valid Shift): 如果 0≤ s ≤n-m,并且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则说模式 P 在文本 T原创 2016-07-04 19:49:25 · 1654 阅读 · 0 评论 -
字符串匹配算法 之 BM(Boyer-Moore)
背景各种文本编辑器的”查找”功能(Ctrl+F),大多采用Boyer-Moore算法。 大家所熟知的GNU grep命令使用的就是该算法,这也是GNU grep比BSD grep快的一个重要原因。 1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种效率高,构思巧妙,容易理解的字符串匹配算法。算法特征假设文本串text长度为n,模式串p原创 2016-07-29 11:52:14 · 1552 阅读 · 0 评论 -
[转载]字符串匹配的Boyer-Moore算法
但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的”查找”功能(Ctrl+F),大多采用Boyer-Moore算法。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授发明了这种算法。 下面,我根据Moore教授自己的例子来解释这种算法。假定text为”HERE IS A SIM转载 2016-07-29 12:18:46 · 510 阅读 · 0 评论 -
字符串匹配算法 之 KMP(Knuth-Morris-Pratt)
KMP简介Knuth-Morris-Pratt算法简称KMP算法。是常用的字符串匹配算法,这个算法由Donald Knuth、Vaughan Pratt、James H. Morris三人于1977年联合发表,故取这3人的姓氏命名此算法。KMP算法流程算法流程如下:pattern 表示模式串,text表示文本串1. pattern第一个字符和text第一个字符对齐,开始逐个字符匹配2. 如果pat原创 2016-07-29 17:10:29 · 1087 阅读 · 0 评论 -
字符串匹配算法 之 (Horspool )Boyer-Moore-Horspool
简介Horspool是后缀搜索,大家都从左往右匹配,它反着来。也就是搜索已读入文本中是否含有模式串的后缀;如果有,是多长,显然,当后缀长度等于模式串的长度时,我们就找到了一个匹配。Horspool算法思想:模式串从右向左进行匹配。对于每个文本搜索窗口,将窗口内的最后一个字符与模式串的最后一个字符进行比较。如果相等,则继续从后向前验证其他字符,直到完全相等或者某个字符不匹配。然后,无论匹配与否,都将根原创 2016-07-29 19:15:32 · 3148 阅读 · 0 评论 -
字符串匹配算法 之 Sunday
基本思想Sunday算法由Daniel M.Sunday在1990年提出,它的思想跟BM算法很相似。只不过Sunday算法是从前往后匹配,在匹配失败时关注的是主串中参加匹配的最末位字符的下一位字符。- 如果该字符没有在模式串中出现则直接跳过,即移动位数 = 模式串长度 + 1;- 否则,其移动位数 = 模式串长度 - 该字符最右出现的位置(以0开始) = 模式串中该字符最右出现的位置到尾部的距离原创 2016-07-29 19:45:01 · 604 阅读 · 0 评论 -
字符串匹配 之 RK(Rabin-Karp)
背景Rabin-Karp字符串匹配算法和前面介绍的《朴素字符串匹配算法》类似,也是对应每一个字符进行比较,不同的是Rabin-Karp采用了把字符进行预处理,也就是对每个字符进行对应进制数并取模运算,类似于通过某种函数计算其函数值,比较的是每个字符的函数值。预处理时间O(m),匹配时间是O((n-m+1)m)。Rabin-Karp算法的思想: 假设待匹配字符串的长度为M,目标字符串的长度为原创 2016-07-29 20:13:49 · 1023 阅读 · 0 评论 -
字符串匹配算法 之 Aho-Corasick
简介首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。多模匹配A原创 2016-07-30 16:03:57 · 6991 阅读 · 0 评论
分享