BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法实现: 1 int ...
分类:
编程语言 时间:
2015-09-27 21:24:37
阅读次数:
272
KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。举个例子来说,如果我想在字符串s(BBCABCEFABCDACEABCDACD)找是否存在子串t(ABCDABD)。1....
分类:
编程语言 时间:
2015-08-31 23:15:10
阅读次数:
280
#include
#include
#include
using namespace std;
void Next(const string & pat,vector & next)
{
next.resize(pat.length());
if(pat.length() == 0)
return;
next[0] = -1;
for(size_t pos = 1; pos...
分类:
编程语言 时间:
2015-08-21 00:14:17
阅读次数:
154
这么有名的串模式匹配算法,在此不作详细介绍了。如果有不了解的请看参考文献的两篇文章。 这里,我只准备介绍一下该算法核心next数组的含义(怎么求,相关博客也很详细)。很多文章介绍next数组的时候,一上来会介绍字符串前缀和后缀的概念,我这里也提一下。给定一个字符串T[0...n],其前缀有:T...
分类:
编程语言 时间:
2015-08-19 00:07:16
阅读次数:
176
作者:海子出处:http://www.cnblogs.com/dolphin0520/KMP算法在介绍KMP算法之前,先介绍一下BF算法。一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字...
分类:
编程语言 时间:
2015-07-30 09:20:24
阅读次数:
152
在串的各种操作中,串的模式匹配是经常用到的一个算法。串的模式匹配也称为子串的定位操作,即查找子串在主串中出现的位置。
1.经典的模式匹配算法Brute-Force。
2.KMP算法。
#include
#include
#include
#define MAXSIZE 60
typedef struct
{
char ch[MAXSIZE];...
分类:
其他好文 时间:
2015-07-27 23:10:08
阅读次数:
124
首先我们一般求子串的位置的时候,我们可以使用这样的方法/*
*功能:这个是定长的串的顺序存储
*时间:2015年7月15日17:16:01
*文件:SString.h
*作者:cutter_point
*/#ifndef SSTRING_H
#define SSTRING_H#define MAXSTRLEN 255class SString
{
unsigned char* ch; //...
分类:
编程语言 时间:
2015-07-26 20:54:46
阅读次数:
298
串(string)是由零个或多个宇符组成的有限序列,又名叫字符串。定义的解释:
??串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。
??零个字符的串称为空串(null string),它的长度为零,可以直接用两双引号一表示,也可以用希腊Φ字母来表示。
??所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。下面是串的一些概念性东西:??空格串,是只包含空格的串。...
分类:
编程语言 时间:
2015-07-26 19:17:34
阅读次数:
132
BM 算法是一个较优的模式匹配算法。一般,如果不考虑模式串的长度,一个具有时间复杂度O(n)的算法应该是最优的了,但是事实不是如此。BM算法可以实现更高效率的模式匹配。分析和实验说明,BM匹配算法对于那些字符集比较大,而模式串中出现的字符比较少的时候,工作效率最快。而且,考虑KMP匹配方式的优化,可...
分类:
编程语言 时间:
2015-07-22 22:31:06
阅读次数:
178
这种由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现的改进的模式匹配算法简称为KMP算法。大概学过信息学的都知道,是个比较难理解的算法,今天特把它搞个彻彻底底明明白白。注意到这是一个改进的算法,所以有必要把原来的模式匹配算法拿出来,其实理解的关键就在这里,一般的匹配算法:int...
分类:
编程语言 时间:
2015-07-22 22:11:42
阅读次数:
121