KMP算法及改進(jìn)(C++)
2022-02-06 18:52 作者:陌風(fēng)ちゃん | 我要投稿
原視頻up主:@木子喵neko
視頻地址:https://www.bilibili.com/video/BV1234y1y7pm

自己隨手寫了一個(gè)(躺平):
運(yùn)行結(jié)果如下:
其實(shí)還可以進(jìn)行進(jìn)一步優(yōu)化, 進(jìn)一步利用失配時(shí)可以獲取到的信息:
當(dāng)失配時(shí)可以知道a[i] != b[j]。
而next[i]表示的是在b串中,第i位失配后需要將j位移到的下一個(gè)位置, 即加下來要比較a[i]和b[next[j]]。如果此時(shí)b[j] == b[next[j]], 接下來的比較其實(shí)也是多余的。因此對(duì)kmp_next函數(shù)可以進(jìn)行一下改進(jìn):
運(yùn)行結(jié)果如下:

標(biāo)簽: