日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

KMP中next数组的理解

發(fā)布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KMP中next数组的理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

next數(shù)組是KMP的核心,但對于next數(shù)組我們總是有時候感覺明白了,但有時候又感覺沒明白,現(xiàn)在我就說下我自己對KMP中next數(shù)組的理解,首先next[i]上的數(shù)字的意義,next[i]表示的是當匹配到匹配串的第i個字母適配的時候,改跳到的位置,為什么要跳,是因為不想回到0重新浪費時間去比較,在深一點理解,我感覺next[i],里存的是 找兩個相同的盡量長的字符串,一個是以從匹配串的第一個字母開始的,另一個是以失配字母i的前一個點結(jié)尾的,他倆可以有相交的地方,但不能完全相交,得到這兩個串的最大長度后+1,就是next[i],通俗的理解就是假如 1231231234 當匹配到4的時候突然失配了,那么我們就找兩個串,以個是以第一個開頭,另一個是以4前面的那個3結(jié)尾,可以相交但不可以完全相交,得到的就是123123 123123,那么當4失配的時候就直接跳到第二個3后后面的那個1比較就行了,因為當前的這個失配點的前一個點為尾的串和以第一個點為起點的串的相等關(guān)系,我們可以有把握的直接跳,減少時間。總之next,KMP給我的感覺就是記憶化搜索,而記憶化搜索我有覺得是DP,所以KMP感覺也是dp吧。畢竟是每一步都不會去走多余的路。

next數(shù)組關(guān)于循環(huán)節(jié)幾個小應(yīng)用
(1)i - next[i] 最小循環(huán)節(jié)(第一個字母開始)
(2)next[i] 最大循環(huán)節(jié)中的第幾位數(shù)(此時循環(huán)節(jié)可交叉)
(3)next[i] != 0 && i % (i - next[i]) == 0,當前是循環(huán)節(jié)中的最??? 后一位.
(4)在(3)的前提下 i / (i - next[i]) 表示的最大周期個數(shù),也就是在最小循環(huán)節(jié)的前提下的最大周期個數(shù)。

總結(jié)

以上是生活随笔為你收集整理的KMP中next数组的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。