字串匹配演算法 Sunday演算法

2021-09-11 21:29:16 字數 450 閱讀 2088

實現原理:

給定的字元母串s(長度為n)和子串t(長度為m),從左到右開始匹配,之後出現不匹配的情況後,判斷母串s參與匹配的最後一位的下一位字元,如果該字元出現在子串t中,選擇子串中最右面出現的位置進行對齊;否則直接跳過該匹配區域。

平均時間複雜度是o(n),最壞降低到o(n*m)

詳細的**可以參考我看到的以下部落格介紹

sunday演算法的**教程1

sunday演算法的**教程2

個人覺得兩個聯絡起來看更方便有效,情況涵蓋就比較全了。

**

#includeusing namespace std;

int* getnext(char* t)

//跳轉

if(k+t_len < s_len)else

} return -1;

}int main()

字串匹配 sunday演算法

原題 lintcode題目 字串查詢 又稱查詢子字串 是字串操作中乙個很有用的函式。你的任務是實現這個函式。對於乙個給定的 source 字串和乙個 target 字串,你應該在 source 字串中找出 target 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。字串匹配最常見的就是km...

字串匹配sunday演算法

在網上看到了一種比kmp和bm演算法還快字串匹配演算法,就看了一下,並且發現一些部落格上寫的 是錯誤的,於是我也寫了乙個,leetcode上測試通過。首先對sunday演算法進行一下講解 從別的地方複製過來的,講的確實不錯 好了,sunday演算法還真的很好理解,用下面的例子來說明吧 j k t h...

字串匹配 Sunday演算法

字串匹配演算法中最先學的演算法是暴力演算法,緊接著是kmp演算法,到現在依舊沒有理解next到底是怎麼求的 尋找到了一種新的演算法 sunday演算法,比kmp演算法更快 匹配時關注匹配主串中參與匹配的最後一位字元的下一位字元。參考 include includeusing namespace st...