以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货。最近有空,翻出来算法导论看看,原来就是这么简单(先不说程序实现,思想很简单)。
模式匹配的经典应用:从一个字符串中找到模式字串的位置。如“abcdef”中“cde”出现在原串第三个位置。从基础看起
朴素的模式匹配算法
A:abcdefg B:cde
首先B从A的第一位开始比较,B++==A++,如果全部成立,返回即可;如果不成立,跳出,从A的第二位开始比较,以此类推。
/* *侯凯,2014-9-16 *功能:模式匹配 */ #include<iostream> #include <string> using namespace std; int index(char *a,char *b) { int tarindex = 0; while(a[tarindex]!='