算法串匹配C++实现字符串匹配的KMP算法

新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,迎欢批评指正

     之前看《算法导论》符字串匹配分部讲到KMP算法,被弄得云里雾里。天今看到阮一峰写了一篇博客《符字串匹配的KMP算法》:

    http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html

    讲的浅显易懂,便按照他的思绪用C++实现了一篇,代码如下:

    

    每日一道理
“上下五千年,龙的看火不灭;古有愚公志,而今从头越…… ”站在新世纪的门槛上,我们的追求就是让祖国灿烂的喜悦飞扬在美好的明天……
#include 
#include 
using namespace std;

//盘算单次的分部匹配值,如str=="ABCDAB"时回返2
int single_match(string str)
{
	int n=str.length();
	string *prefix=new string[n-1]();
	string *suffix=new string[n-1]();
	for(int i=0;i!=n-1;++i){
		for(int j=0;j<=i;++j)
			prefix[i]+=str[j];
		for(int k=i+1;k!=n;++k)
			suffix[i]+=str[k];
	}

	int match_num=0;
	for(int i=0;in1-n2)
		return -1;
	return i;
}

int main()
{
	string str1("BBC ABCDAB ABCDABCDABDE");
	string str2("ABCDABD");
	int n=str2.length();
	int *table=new int[n];

	for(int i=0;i

    代码的缺陷是对符字串的处置过太硬生。习惯了python对string类型的切片作操后,对C++中string类型的应用太疏生,以至于掏出子串的作操都用历遍相加来实现……

    迎欢大家提出修改意见哈~

文章结束给大家分享下程序员的一些笑话语录: 联想——对内高价,补贴对外倾销的伟大“民族”企业。

你可能感兴趣的:(算法串匹配C++实现字符串匹配的KMP算法)