AC自动机简介:KMP是用于解决单模式串匹配问题,
AC自动机用于解决多模式串匹配问题。精华:设这个节点上的字母为C,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为C的节点。然后把当前节点的失败指针指向那个字目也为C的儿子。如果一直走到了root都没找到,那就把失败指针指向root。...
分类:
其他好文 时间:
2014-05-24 09:36:42
阅读次数:
318
1 #include 2 3 4 using namespace std; 5 6 #define
MAX 255 7 8 typedef unsigned char BYTE; 9 10 typedef BYTE String[MAX+1]; 11 12
bo...
分类:
其他好文 时间:
2014-05-22 15:10:06
阅读次数:
278
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4749题意:题意:给出两个数字串A、B。问A中有多少不相交的子串a能匹配B。匹配的意思是a中任意两个位置i和j的大小关系和B的这两个位置的大小关系是一样的。思路:若是完全一模一样的匹配的话那么KMP是很好...
分类:
其他好文 时间:
2014-05-22 03:10:14
阅读次数:
304
举个例子,如字符串 ababc
首先,不考虑空字符,所有的前缀有a, ab, aba, abab, ababc,其中真前缀有a, ab, aba, abab
同理可以理解后缀,真前(后)缀就是指不包含自身的前(后)缀
前缀函数next[j]是指某个字符串的最长真后缀同时也是它的前缀的子串长度。不太理解可以看下面的例子
a -> 0
ab -> 0
aba -> 1
abab -> 2...
分类:
其他好文 时间:
2014-05-18 18:29:02
阅读次数:
993
题目连接:Codeforces 432D Prefixes and Suffixes
题目大意:给出一个字符串,求所有既是前缀串又是后缀串的字符串出现了几次。
解题思路:根据性质可以根据KMP算法求出所有的前后缀串,然后利用dp求解,dp[i]表示从1到i这个子串出现过的次数。转移方程dp[jump[i]]+=dp[i]。任意一个dp[i]的初始状态应该是1。
#include
#...
分类:
其他好文 时间:
2014-05-18 14:11:46
阅读次数:
321
【题目】
Implement strStr().
Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.
【题意】
实现库函数strStr(), 功能是在字符串haystack中找出目标串needle第一次出现的索引位
【思路】
字符串的匹配,可以用暴力解法,但不推荐。一般使用KMP算法求解。
简要介绍一下KMP的思想:
...
分类:
其他好文 时间:
2014-05-18 04:10:04
阅读次数:
244
对串的基本操作都全已经实现对kmp,kf字符串替换等功能全都已经实现由于时间原因。没来得及注释,希望大家参考见谅。串操作hstring.h头文件实现
//kallen 1 #ifndef _HSTRING_H_ 2 #define _HSTRING_H_ 3 #include 4 class mS....
分类:
编程语言 时间:
2014-05-17 21:07:34
阅读次数:
521
while(scanf("%s",str+1)==1){intn=strlen(str+1);next[1]=0;intj=0;for(inti=2;i2#include3#include4#include5#include6#include7#include8usingnamespacestd;9...
分类:
其他好文 时间:
2014-05-17 18:14:24
阅读次数:
270