字串模式匹配演算法

2021-05-08 21:34:47 字數 475 閱讀 2262

題目:給定兩個字串s和t,判斷t是否在s中出現

********************==

思路如下(引用),採用最簡單的匹配方法:

在串s=」abcabcabdabba」中查詢t=」 abcabd」(我們可以假設從下標0開始):先是比較s[0]和t[0]是否相等,然後比較s[1] 和t[1]是否相等…我們發現一直比較到s[5] 和t[5]才不等。如圖:

當這樣乙個失配發生時,t下標必須回溯到開始,s下標回溯的長度與t相同,然後s下標增1,然後再次比較。如圖:

這次立刻發生了失配,t下標又回溯到開始,s下標增1,然後再次比較。如圖:

這次立刻發生了失配,t下標又回溯到開始,s下標增1,然後再次比較。如圖:

又一次發生了失配,所以t下標又回溯到開始,s下標增1,然後再次比較。這次t中的所有字元都和s中相應的字元匹配了。函式返回t在s中的起始下標3。如圖:

字串模式匹配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 匹配成功,返回模式串在目標串的...