字符串的子串定位稱為模式匹配,模式匹配可以有多種方法。簡(jiǎn)單的算法可以使用兩重嵌套循環(huán),時(shí)間復(fù)雜度為母串與子串長(zhǎng)度的乘積。而KMP算法相對(duì)來(lái)說(shuō)在時(shí)間復(fù)雜度上要好得多,為母串與子串長(zhǎng)度的和。但其算符比較難以理解。
在KMP算法中,使用到了一個(gè)next數(shù)組。這個(gè)數(shù)組就是在比較失配時(shí)母串指針不必回溯,而子串指針移動(dòng)相應(yīng)位置即可。我們給出書中next數(shù)組的算式表示以及算法,請(qǐng)你實(shí)現(xiàn)之。
圖1:next數(shù)組的算式表示
圖2:next數(shù)組的算法表示