字串模式匹配演算法之一 樸素模式匹配演算法

2021-06-28 13:41:02 字數 492 閱讀 6372

被搜尋的字串稱為主串,待搜尋的字串稱為模式串。樸素模式匹配演算法的基本思想:

對主串的每乙個字元作為子串開頭,與模式串進行匹配。對主串做大迴圈,每個字元開頭做模式串長度的小迴圈,直到匹配成功或全部遍歷完成為止。

**實現非常簡單:

int strstr(char *haystack, char *needle) 

}}

樸素模式匹配演算法時間複雜度分析如下: 情況

時間複雜度 備註

最好情況    

o(1)

一開始就匹配成功。

最壞情況

o((n-m+1)*m)    

每次不成功的匹配都發生在模式串的最後乙個字元。     

平均情況

o(n+m)

根據等概率原則,平均是(n+m)/2次查詢。

注:其中n為主串長度,m為模式串長度。

字串樸素模式匹配演算法 簡單模式匹配演算法

將主串中與模式串長度相同的子串搞出來,挨個與模式串對比 當子串與模式串某個對應字元不匹配時,就立即放棄當前子串,轉而檢索下乙個子串 若模式串長度為m,主串長度為n,則直到匹配成功 匹配失敗最多需要 n m 1 m次比較 最壞時間複雜度 o nm 最壞情況 每個子串的前m 1個字元都和模式串匹配,只有...

樸素字串匹配演算法

include include include define maxsize 40 define ok 1 define error 0 using namespace std typedef char string maxsize 1 int string assign string m,char...

演算法 樸素字串匹配

模式匹配是資料結構中字串的一種基本運算,給定乙個子串,要求在某個字串中找出與該子串相同的所有子串,這就是模式匹配。假設p是給定的子串,t是待查詢的字串,要求從t中找出與p相同的所有子串,這個問題成為模式匹配問題。p稱為模式,t稱為目標。如果t中存在乙個或多個模式為p的子串,就給出該子串在t中的位置,...