现在我先把没有优化的算法写出了,稍后再琢磨琢磨优化算法
KMP算法
时间限制:1000ms
单点时限:1000ms
内存限制:256MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原...
分类:
编程语言 时间:
2015-04-27 21:57:58
阅读次数:
188
KMP字符串匹配算法 文/编辑 KMP完全匹配算法和Levenshtein相似度匹配算法是模糊查找匹配字符串中最经典的算法,配合近期技术栏目关于算法的探讨,从网上摘取了一些简要的内容,加上自己的一些理解,向大家普及一些这方面的知识,希望能抛砖引玉。 l 算法简介: kmp算法是一种改进的字符串匹配算...
分类:
编程语言 时间:
2015-04-27 18:16:07
阅读次数:
187
Levenshtein字符串距离算法介绍 文/开发部 Dimmacro KMP完全匹配算法和
Levenshtein相似度匹配算法是模糊查找匹配字符串中最经典的算法,配合近期技术栏目关于算法的探讨,上期介绍了KMP算法的一些皮毛,收到了同事的一些反馈,本期再接再厉,搜集了一些资料,简单谈谈Leven...
分类:
编程语言 时间:
2015-04-27 18:09:44
阅读次数:
169
题目大意:
给定亲和串的定义:给定两个字符串s1和s2,如果能通过s1循环移位,使s2包含在s1中,
那么我们就说s2 是s1的亲和串。现在给你两个字符串s1和s2,判断s2是否是s1的亲和串。
思路:
先判断s2的串长度是否小于等于s1的长度,因为如果s2的串长度比s1还要长的话,s2是不
可能是s1的亲和串。然后在s1的串后边在街上s1的串,对s1和s2进行KMP算法,看s1的串
中是否包含s2的串,如果包含,则s2就是s1的亲和串,否则就不是亲和串。...
分类:
其他好文 时间:
2015-04-26 10:57:42
阅读次数:
121
题目大意:
给你长度为N的字符串s,求字符串s的循环前缀的长度和循环的次数。
例如:长度为8的字符串:"abababab"
长度为4的前缀"abab",循环前缀为"ab",循环2次
长度为6的前缀"ababab",循环前缀为"ab",循环3次
长度为8的前缀"abababab",循环前缀为"ab",循环4次
则输出:
4 2
6 3
8 4
思路:
KMP算法中Next[j]求的是第j个位置失配之后返回的匹配位置,即S[0]~S[Next[j]]与
S[j-1-Next[j]]~S[j-1]是相同的,对于...
分类:
其他好文 时间:
2015-04-26 10:52:45
阅读次数:
109
KMP算法poj3461Oulipo题目大意:模板题。思路:模板题。#include#include#includeusing namespace std;int f[10010],ans;char s1[10000],s2[1000000];void prework(){ int i,j,n...
分类:
编程语言 时间:
2015-04-24 21:00:15
阅读次数:
170
题目描述Trie 图就是在 Trie 树上建立 fail 指针,类似于KMP算法中的next数组的作用。这个数据结构的作用是判断一个字符串中是否包含一组字符串中的任意一个。结构体定义是这样的:typedef struct trie_node { trie_node *nodes[26]; trie_...
分类:
其他好文 时间:
2015-04-24 20:44:14
阅读次数:
120
题目大意:
给你两个串S1和S2,求既是S1的前缀同时是S2的后缀的最长字符串及长度。
思路:
KMP算法中Next[j] == k的实质是当前字母不匹配时,模式串的前k项(S0~Sk-1)和位置j前
的k项(Sj-1-k~Sj-1)是相等的,这个k值是所有满足上面情况最大的。那么Next[len]的含义
就是模式串的最长的前缀和后缀相等的串长度。
利用Next[]的性质,先将串S2连接到S1后边。求S1的Next[]数组。那么,现在的Next[len]
就是S1的前缀和S2的后缀最长的长度,这是当这个长...
分类:
其他好文 时间:
2015-04-22 22:14:28
阅读次数:
116
hihocoder.com 上的KMP算法题,搞了半天在VS2012是能通过的,提交上去就是有问题,反复改终于通过了,记录在此,以下是测试通过代码。输入第一行一个整数N,表示测试数据组数。接下来的N^2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第...
分类:
编程语言 时间:
2015-04-22 22:10:02
阅读次数:
137
mark一下,重新温习了 KMP
KMP复杂度O(n+m)
这里有一个解释的超级的好的博客,大家可以去看一下:http://blog.csdn.net/v_july_v/article/details/7041827
换言之,对于给定的模式串:ABCDABD,它的最大长度表及next 数组分别如下:
根据最大长度表求出了next 数组后,从而有...
分类:
编程语言 时间:
2015-04-22 13:59:54
阅读次数:
158