1. 程式人生 > >洛谷P3375 KMP字符串匹配 板子題 kmp/學習筆記

洛谷P3375 KMP字符串匹配 板子題 kmp/學習筆記

預處理 p s 們的 筆記 能力 還要 是個 有意義 pan

哇通過看各種題解總算學懂了!!!發現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!

洛谷P3375 KMP字符串匹配 板子題 kmp/學習筆記