大家好,欢迎来到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