void get_next(SString T, int next[]){//求模式串T的next函数值并存入数组next
int i = 1, j = 0;
next[1] = 0;//T的第1个字符与主串“失配”时,主串的下一字符与T的第1个字符比较
while (i 1时,next[2] = 1
if (j == 0 |...
分类:
其他好文 时间:
2015-07-27 20:59:28
阅读次数:
123
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087题意:求模式串在主串中出现的次数,与模式串匹配的子串之间不可重叠。思路:用kmp算法解决,在匹配更新结果后,重新定位模式串时,不可用j = next[j],应该直接让j定位到模式串开头。code: ...
分类:
其他好文 时间:
2015-07-19 16:22:29
阅读次数:
128
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。
KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。即确定下一次应该从那个位置重新开始匹配。
char*obj = "cbcba";
char*src = "sdcbcbcb...
分类:
编程语言 时间:
2015-07-11 09:19:17
阅读次数:
250
串的定义串是由零个或多个字符组成的有限序列,又名叫字符串串中的字符数目n称为串的长度零个字符的串称为空串串的抽象数据类型串的顺序存储结构串我链式存储结构一个结点可以存储一个字符也可以考虑存储多个字符,最后一个结点若是未被占满时,可以用#或其它非串值字符补全朴素的模式匹配算法对主串的每一个字符作为子串...
分类:
其他好文 时间:
2015-07-05 22:26:35
阅读次数:
160
preface: 想必,很多人都知道D.E.Knuth与V.R.Pratt和J.H.Morris同时提出所谓的狂拽酷炫屌炸天的KMP算法,在对字符串的匹配(或是字符串的查找)方面表现出比较好的效率,该算法对Brute-Force算法的较大改进,具体地讲就是消除了主串指针的回溯,从而使匹配的时间复杂....
分类:
编程语言 时间:
2015-06-29 21:45:42
阅读次数:
227
说明2014阿里巴巴网上笔试题-文章3大标题 首先。我没有参加阿里巴巴网上笔试题,所有的主题是叙述性说明来自别人。的分析。假设有什么不正确的地方还望不吝赐教。也希望大家可以有更好的办法,希望大家来能不吝赐教。题目描写叙述给定一个主字符串和一个匹配字符串。如今问你,找出 “主串中可匹配到的匹配串中子串...
分类:
其他好文 时间:
2015-06-29 20:08:44
阅读次数:
97
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3430题意:给你n个编码后的模式串,和m个编码后的主串,求原来主串中含有模式串的个数思路:首先要将模式串解码成未编码前来建立ac自动机,然后解码主串扫描统计即可。co...
分类:
其他好文 时间:
2015-06-24 18:06:49
阅读次数:
138
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065题意:有n个模式串,一个主串,求每个模式串在主串中出现的次数思路:AC自动机水题,trie树中也要维护标号,再开一个num数组记录出现次数即可,扫描匹配时注意跳转fail指针和root节点。code...
分类:
其他好文 时间:
2015-06-18 09:33:11
阅读次数:
118
比如主串为:”1001110110”
子串为:”11“
则出现位置分别为:3 4 7//KMP算法 2015.6.7#include
#include
using namespace std;int main()
{
char *s = "1001110110";
char *p = "11";
int ar[20] = {...
分类:
编程语言 时间:
2015-06-15 23:59:17
阅读次数:
340
#include#includeint strTime(const char *str1, const char *str2, int *time){ int count = 0; char *p1 = str1; char *p2 = str2; //p1是第一次出现的位置 p1 = strstr...
分类:
其他好文 时间:
2015-06-04 20:48:00
阅读次数:
109