C 實現KMP演算法及其優化

2021-08-29 18:39:49 字數 722 閱讀 4078

自己寫了乙個簡潔版本, 加注釋。

第乙個函式是得到kmp的next陣列。

1、設定next的第乙個值為-1。

2、遍歷剩下的t串

3、t串前後比較,相等就在next中對應位置加1

4、不等,就回溯 t串中等價位置

void getnext(string &t,int *next)

else

j = next[j];

}}

第二個 即為kmp函式

1、首先生成next陣列

2、對s串、t串進行遍歷

3、相等時 繼續往前走

4、不等時且此時對應的 next值為-1 時,代表此時t串又回到了第乙個位置,並且s串、t串該處不匹配

5、其他情況時將next值賦給t串的移動變數j

6、釋放next

7、如果j已經走到了t串尾,則表示已經s串、t串已經各處匹配,返回i-j

不然,匹配失敗,返回-1

int  kmp_method(string &s, string &t)//s為源串,t為目標串

else if (next[j] == -1)

i++;

else

j = next[j];

} if (next)

return (j == t.size()) ? i -j : -1;

}

KMP演算法及其優化

今天來記錄一下,關於字元匹配的kmp演算法。給定字串text和pattern,需要判斷字串pattern是否為test的子串。pattern一般稱為模式串,text為文字串。若匹配成功,則讓函式返回,匹配開始處的下標,否則,返回 1。假設有乙個字串s,它以i號位作為結尾的子串就是s 1 i 對該字串...

經典演算法之KMP演算法及其優化

kmp演算法的具體分析見 author s email wardseptember gmail.com date 2017.12.18 kmp演算法 include include using namespace std define maxsize 50 void getnext char sub...

Kmp字元匹配演算法優化C 實現

c 實現kmp字元匹配演算法的優化版 標頭檔案 kmpalgorithm.h ifndef kmpalgorithm h define kmpalgorithm h include include class kmpalgorithm int index kmp int pos 字元匹配函式 end...