C语言:串的模式匹配算法

C语言:串的模式匹配算法BF算法(穷举):int i = pos;//i用于主串parent中的起始位置int j = 1; //子串的起始位置while(i <

大家好,欢迎来到IT知识分享网。

BF算法(穷举):

int i = pos;//i用于主串parent中的起始位置

int j = 1; //子串的起始位置

while(i <= parent->length && j <= child->length){

if(parent->ch[i – 1] == child->ch[j – 1]){

i++;

j++;

}else{

i = i – j + 2; //i回朔到上次匹配的首位的下一位

j = 1; //j回到子串的第一个位置

}

}

if(j > child->length){

return i – child->length;

}

return 0;

}

KMP算法(不回溯指针i,利用部分匹配值将指针向右滑到尽可能远的距离,速度快):

部分匹配值的计算:

int i = 0;

int j = -1;

next[0] = -1;

while(i < child.length){

if(j == -1 || child.ch[i] == child.ch[j]){

++i;

++j;

next[i] = j;

}else{

j = next[j];

}

}

KMP算法实现时与BF算法区别

else{

j = next[j];//

}

}

if(j == child->length){

return (i + 1) – j;

}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/48618.html

(0)
上一篇 2024-09-07 18:33
下一篇 2024-09-07 19:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信