洛谷P3375 KMP字符串匹配 板子题 kmp/学习笔记

哇通过看各种题解总算学懂了!!!发现kmp并没有那--么难理解哦quq

然后写博客真滴是个好习惯...把所有知识点都用自己的语言梳理一遍不仅能帮助自己理解还能帮助将来的学弟学妹们qwq(昂我就,主要是看的学长们的blog然后就懂辽...

首先介绍最傻逼的暴力解法引入正题这个就懒得讲了没什么意思也没这时间,直接港kmp的思想

这样的:

...不能画图我是真滴绝望然而我表达能力又巨弱...哭了

行吧随便港下

首先,我并不关心被匹配串,因为显然匹配串更灵活嘛,就只需要考虑匹配串

然后现在考虑,假如我匹配串从第1位到第i位都匹配成功了,然后到第i+1位失败了,怎么搞

肯定是往后移,但是直接移就太傻逼了就是暴力了嘛,我们考虑用已知条件推出来我们至少要移动到哪儿

然后现在还能给你个已经预处理过了的数组nxt[i],存的是从第1位到第i位,前缀后缀相等的最大长度(这里能理解趴?不能我后期补图qwq

那我们就可以发现,我们只需要往后移到第i位并从nxt[i]位继续匹配就好了(这个还是显然的?下面还是详细解释下quq

不想详细解释啊这个没有那么难理解?然后安利一下syc学长的博客里面有动图,不理解的时候去看下就能理解了quq链接就不放了不打招呼感觉不太好但是又不敢去问就这样趴w

然后大概理解了趴?还有一个就是,我们怎么求nxt呢?

就是,把匹配串和自己匹配一遍,就,出来了

但是,自己和自己匹配肯定是全匹配上了嘛没有意义,所以就处理下

over

(话说这个匹配这段我并没有理解啊...还要再理解下下课了先这样over

然后代码没有以后补

overrrrrr!

猜你喜欢

转载自www.cnblogs.com/lqsukida/p/9880082.html