s为主串 t为模板串 求t的nextt 加const
分类:
其他好文 时间:
2016-03-21 09:24:01
阅读次数:
158
1 /* next数组是KMP算法的关键,next数组的作用是:当模式串T和主串S失配 2 * ,next数组对应的元素指导应该用T串中的哪一个元素进行下一轮的匹配 3 * next数组和T串相关,和S串无关。KMP的关键是next数组的求法。 4 * 5 * ———————————————————
分类:
编程语言 时间:
2016-03-04 23:59:08
阅读次数:
527
关于KMP模式匹配算法 在处理字符串中,我们总是需要判断一个主串S中,是否包含子串T,那么我们怎么能高效率地去做呢? ① 、朴素的模式匹配算法,所谓朴素,就是不讲技巧,暴力枚举,我们先看个例子,例如有个主串 S=”ABCDEFGGGQ”,我们需要去找其中其否含有子串T=”GGGQ”,如果用朴素的模式
分类:
其他好文 时间:
2016-02-01 15:32:51
阅读次数:
189
串是由零个或多个字符组成的有限序列,幽冥教字符串。一般记作 a = "aaaaaa";串中的字符数目n称为串的长度。零个字符的串称为空串。空格串是只包含空格的串。空格串有内容有长度。串中任意个数的连续字符组成的子序列称为该串的子串。包含子串的串称为主串。子串在住串中的位置就是子串的第一个字符在主串中...
分类:
其他好文 时间:
2016-01-12 21:18:46
阅读次数:
125
可以推出:next[j]的意思是:应该用模式串的第next[j]个字符去跟主串的那个发生失配的字符i字符对上继续比较。
分类:
其他好文 时间:
2016-01-07 00:59:34
阅读次数:
130
next数组的历史 有关字符串的模式匹配算法中,比较容易写出的是朴素的匹配算法也就是一种暴力求解方式,但是由于其时间复杂度为子串长度和主串长度的乘积,例如strlen(subStr) = n,strlen(mainStr) = m,则其时间复杂度为O(mn)。 为了能够得到更有效的匹配算法,D......
分类:
编程语言 时间:
2015-11-26 12:26:35
阅读次数:
140
前言: KMP算法是一种字符串匹配算法,由Knuth,Morris和Pratt同时发现(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。比较流行的做法是实现一个next()函数,函数本身包含了模式串的局部匹配信息。由于next函数理解起....
分类:
编程语言 时间:
2015-10-31 17:12:50
阅读次数:
371
KMP算法是一种模式匹配算法的改进版,其通过减少匹配的次数以及使主串不回朔来减少字符串匹配的次数,从而较少算法的相应代价,但是,事件万物是普遍归中的,KMP算法的有效性也是有一定的局限的,我将在本文的最后也讨论这个算法的局限性。 一般的匹配算法: KMP基本概念引入: 但是,其实我们会发现,上面的....
分类:
编程语言 时间:
2015-10-20 22:46:52
阅读次数:
361
朴素模式匹配算法
public class Test {
//朴素模式匹配算法
public int Index(String s,String t,int pos){
int i = pos;//主串中第几个位置开始比较
int j = 0;//模式串中的第一个位置
while(i<s.length()&&j<t.lengt...
分类:
编程语言 时间:
2015-10-18 23:17:22
阅读次数:
409
strstr函数:返回主串中子字符串的位置后的所有字符。#include const char *my_strstr(const char *str, const char *sub_str){ for(int i = 0; str[i] != '\0'; i++) { i...
分类:
其他好文 时间:
2015-09-05 19:19:33
阅读次数:
117