字符串也是ACM中的重头戏,基本内容有KMP ,扩展KMP, Manacher ,AC自动机,后缀数组,后缀自动机.按照专题来做共分三部分. LCS LIS LCIS不知道算不算....点击打开链接
小技巧:匹配问题不区分大小写,则将其全部转为小写.
暴力匹配: 用strstr函数就能解决 I M N Z(枚举长度 三份)
一.KMP算法
解决单一模式串匹配问题.
利用失配后...
分类:
其他好文 时间:
2015-03-15 12:31:10
阅读次数:
377
字符串匹配是计算机的基本任务之一。
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?
许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。
这种算法不太容易理解,网上有很多解释,...
分类:
编程语言 时间:
2015-03-15 10:57:16
阅读次数:
185
字符串匹配指有一个文本串S和一个模式串P,现在要查找P在S中的位置。
主要有以下算法:
其中朴素算法和KMP算法我们在这边blog
http://blog.csdn.net/lu597203933/article/details/41124815中已经讲解过。RP算法时间复杂度较高,我也没看,想看可以看算法导论。这里主要讲解有限自动机的字符串匹配算法。
有限自动机的定义:...
分类:
编程语言 时间:
2015-03-13 20:48:27
阅读次数:
158
求 子串 的 位置 有两种方法,一种是暴力搜索法,另一种就是KMP 算法。他们的效率 在一般的情况下,区别不大。但是在 串的 变化 范围特别小的情况下,例如 只有 0 和 1,KMP 的时间复杂度是 O(m+n),而暴力搜索法定时间 复杂度 是 O(m*n),(m,n分别指 子串 和 母串的 长度)
暴力搜索非常简单,下面给出代码:
// KMP.cpp : 定义控制台应用程序的入口点。
//...
分类:
编程语言 时间:
2015-03-12 11:37:18
阅读次数:
177
今天看到了一篇关于KMP算法的讲解的文章,很难得,讲得非常清楚。分享给大家,希望对大家有帮助。http://kb.cnblogs.com/page/176818/我自己基于这个讲解的内容作了一个实现,效果还不错,码代码的功力有限,还请大家多指正其中可以改进的地方。 1 using System.Co...
分类:
编程语言 时间:
2015-03-11 23:19:24
阅读次数:
204
思路:裸裸的kmp算法;
#include
#include
int next[5000100],a[5000100],b[5000010];
int n,m;
void getnext()
{
int i=0,j=-1;
memset(next,0,sizeof(next));
next[0]=-1;
while(i<m)
{
if(j=...
分类:
其他好文 时间:
2015-03-11 17:13:22
阅读次数:
142
首先从直观上看KMP存在的价值:
一般在遇到字符串匹配的问题的时候,一种朴素的比较方式就是
int BFMatch(char *s,char *p)
{
int i,j;
i=0;
while(i<strlen(s))
{
j=0;
while(s[i]==p[j]&&j<strlen(p))
{
...
分类:
编程语言 时间:
2015-03-10 23:14:59
阅读次数:
326
之前说到,朴素的匹配,每趟比较,都要回溯主串的指针,费事。则 KMP 就是对朴素匹配的一种改进。正好复习一下。KMP 算法其改进思想在于:每当一趟匹配过程中出现字符比较不相等时,不需要回溯主串的 i指针,而是利用已经得到的“部分匹配”的结果将模式子串向右“滑动”尽可能远的一段距离后,继续进行比较。如...
分类:
编程语言 时间:
2015-03-10 06:47:58
阅读次数:
9603
KMP算法详解: KMP算法之所以叫做KMP算法是因为这个算法是由三个人共同提出来的,就取三个人名字的首字母作为该算法的名字。其实KMP算法与BF算法的区别就在于KMP算法巧妙的消除了指针i的回溯问题,只需确定下次匹配j的位置即可,使得问题的复杂度由O(mn)下降到O(m+n)。 在KMP算法中.....
分类:
编程语言 时间:
2015-03-09 12:29:28
阅读次数:
229
用这题复习下kmp算法。kmp网上坑爹的是有很多种匹配方式,容易混淆,后人要警惕啊。这里对要查找的字符串的next全部置为-1,预处理时i和next[i-1]+1相比较。和http://kb.cnblogs.com/page/176818/ 这里相似。预处理完再匹配,第i个字符不匹配则比较第next[i-1]+1个。
class Solution{
public:
cha...
分类:
编程语言 时间:
2015-03-07 22:49:19
阅读次数:
202