■Boyer-Moore(BM)算法 开发于1977年的Boyer-Moore算法是一种基于后缀匹配的模式串匹配算法,后缀匹配就是模式串从右到左开始比较,但模式串的移动还是从左到右的。为了实现更快的移动模式串,BM定义了两个规则...
分类:
编程语言 时间:
2015-05-27 21:19:04
阅读次数:
155
题目链接:http://poj.org/problem?id=3167题意:模式串可以浮动的模式匹配问题给出模式串的相对大小,需要找出模式串匹配次数和位置。思路:统计比当前数小,和于当前数相等的,然后进行kmp。比如说模式串:1,4,4,2,3,1 而主串:5,6,2,10,10,7,3,2,9,那...
分类:
其他好文 时间:
2015-04-30 15:54:32
阅读次数:
167
前几天百度LBS部门实习二面,让写一个字符串匹配函数,当时忘记KMP怎么写了,就默默的写了一个暴力搜索,连尝试推导一下KMP都没有,结果自然是没有过,以后面试要多和面试官交流,就算忘记了,也要让他知道你试图推导,要不然他会觉得你可能都没有听过。 KMP是对前缀暴力搜索的改进,基于的想法其实是很...
分类:
编程语言 时间:
2015-04-21 14:24:25
阅读次数:
134
不敢去做一件事就会一直觉得它很难。。
以前一直觉得AC自动机应该超难写,学了以后发现实在太好写了。。
AC自动机的fail指针与KMP算法的next数组是极为相似的,都是通过这些来减少冗余的扫描,所以我也把AC自动机的fail指针名字直接开成next了。。
AC自动机与KMP的不同在于KMP是单模式串匹配,AC自动机是多模式串匹配,所以AC自动机可以理解为就是在trie树上加上一些next指...
分类:
其他好文 时间:
2015-04-18 10:05:17
阅读次数:
178
就向书上说得那样,如果模式串P的第i行出现在文本串T的第r行第c列,则cnt[r-i][c]++;还有个很棘手的问题就是模式串中可能会有相同的串,所以用repr[i]来记录第i个模式串P[i]第一次出现的位置。如果repr[i] == i,说明这个模式串之前没有重复过,可以加进自动机里去。有重复的话...
分类:
其他好文 时间:
2015-04-05 21:44:27
阅读次数:
127
KMP算法简单粗暴的代码,严密的逻辑,初学的时候,真的很难搞懂,不过曾力胜老师这周出的模式串匹配的变形题目,让我反思了一下KMP算法,昨天晚上写出了链表形式,也算是进步吧。昨天太急,没来得及记录,今天补充起来。/*Name: KMP之链表写法Date :2015/3/29Write by:杨领 *....
分类:
编程语言 时间:
2015-03-31 00:26:48
阅读次数:
406
在一个大的字符串中对一个小的子串进行定位成为字符串的模式匹配,这应该算是字符串中最重要的一个操作之一了。问题描述:有一个文本串s和一个模式串p,现在要查找p在s中的位置,怎么查找?如果用暴力匹配的思路,并假设文本串匹配到i位置,模式串匹配到j位置。算法描述:有关字符串的模式匹配,首先来看最简单的一个...
分类:
编程语言 时间:
2015-03-18 23:00:13
阅读次数:
221
AC自动机,其实就是Trie树与KMP的结合,且有dfa(有限状态机)的性质.
理解的关键点:
1. fail指针 起到回溯作用
2.每次匹配都是主串不动,移动指针now去回溯找后缀的前缀
3.一个优化点,将NULL指向root 编码更简单.
考察时一般也会问道dfa的性质.
AC自动机解决问题:
1.多模式串匹配
2.给定一个长度,满足XX条件能构造多少个.
ABCD ...
分类:
其他好文 时间:
2015-03-18 14:09:14
阅读次数:
138
字符串也是ACM中的重头戏,基本内容有KMP ,扩展KMP, Manacher ,AC自动机,后缀数组,后缀自动机.按照专题来做共分三部分. LCS LIS LCIS不知道算不算....点击打开链接
小技巧:匹配问题不区分大小写,则将其全部转为小写.
暴力匹配: 用strstr函数就能解决 I M N Z(枚举长度 三份)
一.KMP算法
解决单一模式串匹配问题.
利用失配后...
分类:
其他好文 时间:
2015-03-15 12:31:10
阅读次数:
377
trie图用于解决多模式匹配问题。设有N个长度不超过L的模式串,匹配串长为M,那么用trie图解决多模式匹配问题的复杂度为O(N*L+M).思路:trie图的基础是trie树。1.用trie树实现多模式匹配 首先建立N个模式串的trie树。设匹配串为s,我们枚举匹配起始位置i,在trie树中依次去....
分类:
其他好文 时间:
2015-02-17 14:04:55
阅读次数:
124