KMP演算法中模式串移動next陣列的計算

2021-10-25 02:12:10 字數 456 閱讀 3626

題目描述

字串的子串定位稱為模式匹配,模式匹配可以有多種方法。簡單的演算法可以使用兩重巢狀迴圈,時間複雜度為母串與子串長度的乘積。而kmp演算法相對來說在時間複雜度上要好得多,為母串與子串長度的和。但其算符比較難以理解。

在kmp演算法中,使用到了乙個next陣列。這個陣列就是在比較失配時母串指標不必回溯,而子串指標移動相應位置即可。請參考教材next陣列的計算公式與演算法,程式設計實現之。

輸入乙個模式串,僅由英文小寫字母組成。長度不大於100。

輸出輸出模式串對應的移動陣列next。每個整數後跟乙個空格。

樣例輸入 copy

abaabcac

樣例輸出 copy

0 1 1 2 2 3 1 2

#include

#include

#include

char a[

1

串 KMP模式匹配演算法(next陣列)

include include include void get next char t 100 int next int index kmp char s 100 char t 100 int pos int main void get next char t 100 int next else ...

kmp演算法next例題 KMP演算法next陣列求解

kmp演算法與bf演算法的比較 bf演算法的想法十分樸素,即先將子串t的第一位與主串s的第一位對齊開始匹配,當不能匹配時將子串整體往後移一位,然後重新匹配,以此類推直至排出結果 如當遇到下圖所示情況時,需將子串整體後移一位,將i,j分別回溯到主串第2位和子串第一位。kmp演算法 對bf進行思考後,我...

KMP演算法中的模式串移動陣列

字串的子串定位稱為模式匹配,模式匹配可以有多種方法。簡單的演算法可以使用兩重巢狀迴圈,時間複雜度為母串與子串長度的乘積。而kmp演算法相對來說在時間複雜度上要好得多,為母串與子串長度的和。但其算符比較難以理解。在kmp演算法中,使用到了乙個next陣列。這個陣列就是在比較失配時母串指標不必回溯,而子...