KMP字串模式匹配演算法實現

2021-08-04 11:30:14 字數 634 閱讀 8158

給定字串s和匹配串t,請你求出匹配串t在s中第一次正確匹配的索引位置。若匹配失敗則返回0。

- 如題,c++版本的kmp**模版如下:

樣例輸入

string str

thisisalongstring isa

nosubstring subt

樣例輸出

1 5

0

#include

#include

#include

using

namespace

std;

const

int maxn=102;

void get_next(char *t, int *next) else

j = next[j];

}}int index_kmp(char *s, char *t, int pos) else j = next[j]; // 模式串向右移動

}if (j > tlen) return i - tlen; // 匹配成功

else

return0;}

int main()

return

0;}

KMP字串模式匹配演算法實現

kmp演算法是字串模式匹配演算法中較為高效的演算法之一,其在某次子串匹配母串失敗時並未回溯母串的指標而是將子串的指標移動到相應的位置。嚴蔚敏老師的書中詳細描述了kmp演算法,同時前面的例子中也描述了子串移動位置的陣列實現的演算法。前面你已經實現了子串移動的陣列,現在就來利用該陣列來實現kmp模式匹配...

字串模式匹配KMP演算法

next的值去改變每次匹配的位置 注意 字串的儲存最好用字元陣列,然後用字元輸入的形式,保證正確!利用求模式串的next值來分析遍歷,可以在不改變主串i的值的基礎上,只改變next j 的下標來遍歷 next j include include using namespace std void ge...

字串模式匹配KMP演算法

字串模式匹配指的是,找出特定的模式串在乙個較長的字串中出現的位置。很直觀的可以寫出下面的 來找出模式串在乙個長字串中出現的位置。1 2 樸素的模式匹配演算法 3 功能 字串的模式匹配 4 引數 5 s 目標串 6 p 模式串 7 pos 開發匹配的位置 8 返回值 9 匹配成功,返回模式串在目標串的...