KMP算法简单易懂解释?或用一个简单例子逐步说明一下.谢!

spakeyang2022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
桂圆莲子 共回答了14个问题 | 采纳率100%
好吧~KMP当初我也想了挺久的~很巧妙的算法啊!相必复制百科什么的你也不会看的了所以我手打吧…下面是我的理解~为了解说方便我把长的称为文本串,短的称为目标串~常规的匹配算法是把目标串一位一位地右移,跟文本串比较...
1年前

相关推荐

kmp算法中的next j 0 1 2 3 4 a b a a bnext -1 0 0 1 1我觉得 next{j}应
kmp算法中的next
j 0 1 2 3 4
a b a a b
next -1 0 0 1 1
我觉得 next{j}应该是0啊 怎么会是1呢?
上述错了
是第四个 next【4】 = 1 为什么呢 我觉得是0
summerjane1年前1
L叫什么好呢 共回答了13个问题 | 采纳率76.9%
的确应该是0,相信自己
您好,对于KMP算法中的next函数,对于模式串'abaabc',为什么next[6]=0而不是next[6]=3呢?
fungjie1年前1
大杨村 共回答了20个问题 | 采纳率95%
你可能还没有搞清NEXT函数的意思.如果NEXT[6]=3,abaabc,前面这三个字符的比较就没有意义,不如跳过.直接将模式串的指针回到0,主串的指针不变,然后进行比较!
求BF算法的比较次数比KMP算法少的例子s=?,t=?
胆里老周1年前1
宝宝天使 共回答了25个问题 | 采纳率84%
abcdef bcdef
求KMP算法 基本思想
蓝舞蝶依1年前1
tt忤逆 共回答了17个问题 | 采纳率76.5%
(1)求得模式串中每个字符的next[j]值;
(2)进行模式匹配.
假设i和j分别为指示主串和模式串中正在比较的字符的当前位置,并对i 和j 赋初值0.在匹配的过程中,若si=tj,则i和j分别增加1,继续进行比较,否则,i不变,而j退回到next[j]的位置进行新一轮的比较.如此递推下去,直到出现下列两种情况:
当j退回到某个值next[j]值时,匹配成功,则i和j分别增加1继续匹配;
当j退回到值为0时,即next[j]=0,说明主串的当前字符匹配失败,这时将主串向右滑动一个位置,即从i+1处重新开始新一轮的匹配,此时j=0.
KMP算法中的一些问题,next[j]的值表示P[0...j-1]中最长后缀的长度等于相同字符序列的前缀到底是什么意思?
Min_L1年前1
xuguang197813 共回答了19个问题 | 采纳率100%

a b a b a b c
后缀:通俗地说就是所有包含了尾部字符的字串,就是一个后缀,如c ,bc,abc,都是;
前缀:当然是包含了第一个字符的字串了.
但是所有字串必须是连续的,像ac就不是一个前缀,也不是一个后缀,
弄清楚这个,KMP就不是问题了!