以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货。最近有空,翻出来算法导论看看,原来就是这么简单(下不说程序实现,思想很简单)。
模式匹配的经典应用:从一个字符串中找到模式字串的位置。如“abcdef”中“cde”出现在原串第三个位置。从基础看起
朴素的模式匹配算法
A:abcdefg B:cde
首先B从A的第一位开始比较,B++==A++,如果全部成立,返回即可;如果不成立,跳出,从A的第二位开始比较,以此类推。
int index(char *a,char *b)
{
int tarindex = 0;
while(a[tarindex]!=\'\\0\')
{
int tarlen = tarindex;
int patlen;
for(patlen=0;b[patlen]!=\'\\0\';patlen++)
{
if(a[tarlen++]!=b[patlen])
{
break;
}
}
if(b[patlen]==\'\\0\')
{
return tarindex;
}
tarindex++;
}
return -1;
}
int main()
{
char *a = \"abcdef\";
char *b = \"cdf\";
cout<<index(a,b)<<endl;
system(\"Pause\");
}
本文地址:https://www.stayed.cn/item/24071
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我