字串模式匹配 KMP演算法

2021-08-14 21:31:30 字數 458 閱讀 9893

kmp演算法的核心,是部分匹配表(partial match table)陣列。pmt陣列儲存字串字首集合和字尾集合的交集中最長字串的長度。以ababaca為例,對ababa來說,其字串字首集合為,字尾集合為。故兩集合交集對應的最長字串為aba,其長度為3,其對應的pmt陣列中的值即為3。通過利用pmt陣列儲存重複模式,在字串模式匹配的過程中可減少重複匹配。

具體**如下:

int kmp(char* s, char* t)

else j = pmt[j];

}if(j == len2) return i-j;

else

return -1;

}void getpmt(char* t, int* next)

else j = pmt[j];

}}

參考:如何更好的理解和掌握 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 匹配成功,返回模式串在目標串的...

字串模式匹配KMP演算法

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