串的模式匹配演算法之BF演算法

2021-10-09 12:08:36 字數 797 閱讀 5577

演算法的基本思想是:從主串s的第pos個字元起和模式的第乙個字元比較,若相等,則繼續逐個比較後續字元;否則從主串的下乙個字元起再重新和模式的字元比較。依次類推,直至模式t中的每個字元依次和主串s中的乙個連續的字串行相等,則稱匹配成功,函式值為和模式t中的每個字元依次和主串s中的序號,否則稱匹配不成功,函式值為0,分別利用計數指標i和j指示主串s和模式串t中當前正待比較的字元位置。

過程描述如下:

#include#include//空間:o(1)

//如果失敗,i(主串下標)必須回退到剛才的起始位置的下乙個,j(子串下標)回退到0

//成功返回主串下標

//樸素查詢演算法

int bf(const char *str1,const char *str2,int pos)//pos是開始查詢的主串下標

int len1 = strlen(str1),len2 = strlen(str2);

int i = pos,j = 0;//i是主串的下標,j是字串的下標

while (i < len1 && j < len2)

else

}if(j >= len2)//子串走完則為查詢成功

else

}int main()

程式執行結果如下:

BF演算法 串的模式匹配演算法

子串的定位運算通常稱為串的模式匹配或串匹配。串的模式匹配設有兩個字串s和t,設s為主串,也稱正文串 設t為子串,也稱模式。在主串s中查詢與模式t相匹配的子串,如果匹配成功,確定相匹配的子串中的第乙個字元在主串s 現的位置。著名的模式匹配演算法有bf演算法和kmp演算法,下面介紹bf演算法。模式匹配不...

BF演算法 串的模式匹配

bf演算法,即暴風 brute force 演算法,是普通的模式匹配演算法,bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元 若不相等,則比較s的第二個字元和t的第乙個字元,依次比較下去,直到得出最後的匹配結果。bf演算法是...

串的模式匹配演算法 BF演算法詳解

二 時間複雜度 三 c 實現 bf演算法是一種蠻力演算法,其實現過程沒有任何技巧,就是簡單粗暴地拿乙個串同另乙個串中的字元一一比對,得到最終結果。演算法目的 確定主串中所含子串第一次出現的位置,這裡的子串也稱為模式串。1 主串和模式串逐個字元進行比較 2 當出現字元不匹配 失配 時,主串的比較位置重...