这几天折腾了下KMP,终于算是理解了其中的原理。现在这里大概记录下,以备不时之需!! char str[MAXN]; //原串 char p[MAXN]; //需要在原串中寻找的字符串相对于一般的字符串匹配,KMP算法优化的地方就在于 当发现当前匹配的位置 k + 1 匹配失败时...
分类:
编程语言 时间:
2015-04-02 14:39:39
阅读次数:
173
program KMP(input, output);
var
fail:array[1..1000] of longint ;
s1,s2:string;
{==============================================}
procedure find;
var
i,j:longint;
begin
fail[1]:=0;
j:=fail[1];...
分类:
编程语言 时间:
2015-04-01 21:52:37
阅读次数:
168
BM(Boyer-Moore)算法,后缀匹配,是指模式串的比较从右到左,模式串的移动也是从左到右的匹配过程,一般情况比KMP算法要快。时间复杂度O(m/n)C++描述(教师版)int BM(char S[],char T[], int n, int m){//主串长度为n,模式串长度为m,主串和模式...
分类:
编程语言 时间:
2015-04-01 19:31:34
阅读次数:
158
原文http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里...
分类:
编程语言 时间:
2015-04-01 01:39:30
阅读次数:
160
KMP算法简单粗暴的代码,严密的逻辑,初学的时候,真的很难搞懂,不过曾力胜老师这周出的模式串匹配的变形题目,让我反思了一下KMP算法,昨天晚上写出了链表形式,也算是进步吧。昨天太急,没来得及记录,今天补充起来。/*Name: KMP之链表写法Date :2015/3/29Write by:杨领 *....
分类:
编程语言 时间:
2015-03-31 00:26:48
阅读次数:
406
#include
#include
#include
using namespace std;
const int MAX = 100;
int nextVal[MAX];
void get_next(char t[]){
int len = strlen(t);
int i=1;
int j=0;
nextVal[1]=0;
while(i < l...
分类:
编程语言 时间:
2015-03-30 21:13:03
阅读次数:
216
对于暴力搜索法,当搜索词对应的字符与字符串中的字符不匹配时。将搜索词整个后移一位,再从头逐个比较。这样做虽然可行,但是效率很差,因为你要把”搜索位置”移到已经比较过的位置,重比一遍。应用KMP算法之后,则有:
移动位数 = 已匹配的字符数 - 对应的部分匹配值
“部分匹配值”就是”前缀”和”后缀”的最长的共有元素的长度。KMP算法实现代码如下:void prefixFun(char *pat...
分类:
编程语言 时间:
2015-03-29 20:59:34
阅读次数:
259
题目大意:给出a和b串,a是b串的子串,如果b串有连续的a串,那么就将b串的a串删除,问删除多少次;题目分析:打比赛的时候没敲出来,后来想到用栈的思想去模拟就行,网上还有用KMP+栈去做的,没有KMP,也能AC,一会去学习一下KMP算法 1 #include 2 #include 3 #includ...
分类:
其他好文 时间:
2015-03-29 12:01:09
阅读次数:
98
肯定有很多人对kmp算法,学了很多遍了,还是不懂,其实,很简单,我们简单的来看两个问题,就可以了!
一般的暴力算法,大家,应该都知道,扫两次,直接比较,就可以得到答案了,
我们直接来看,有没有可以简化
首先,和一般的算法一样,直接匹配,直到p[i]!=p[j];这时,如果是一般的算法i要回退回去,j也要从新开始,但我们没有好好的利用已经得到的有用信息
如图已经知道了,前面一段是相等...
分类:
编程语言 时间:
2015-03-28 11:37:19
阅读次数:
184
时间限制:1000ms
单点时限:1000ms
内存限制:256MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。
这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原串)里面是不是存在那么一些……特殊……的文字...
分类:
编程语言 时间:
2015-03-21 18:43:50
阅读次数:
180