模式匹配之BF演算法和KMP演算法

2021-10-10 15:51:55 字數 931 閱讀 7819

兩種演算法主要差別就是指標回溯的位置,kmp演算法去除了bf演算法中很多重複的比較

#define _crt_secure_no_warnings

#include

#include

#include

//使用陣列下標的方式比較,如果找到返回子串在主串中的位置,沒找到返回-1

intbf

(const

char

* str,

const

char

* substr)

if(str[i]

== substr[j]

) i = i - j +1;

j =0;

}return-1

;}//改進後的kmp演算法

//next陣列求解

void

nextarray

(char

* str,

int* next)

else}}

intkmp

(const

char

* str,

const

char

* substr)

;nextarray

(substr, next)

;int i =0;

int j =0;

int lenstr =

strlen

(str)

;int lensubstr =

strlen

(substr)

;while

(i < lenstr && j < lensubstr)

else}if

(j == lensubstr)

else

return-1

;}intmain()

串模式匹配之BF和KMP演算法

本文簡要談一下串的模式匹配。主要闡述bf演算法和kmp演算法。力求講的清楚又簡潔。一 bf演算法 核心思想是 對於主串s和模式串t,長度令為len1,len2,依次遍歷主串s,即第一次從位置0開始len2個字元是否與t對應的字元相等,如果完全相等,匹配成功 否則,從下個位置1開始,再次比較從1開始l...

串的模式匹配演算法(BF和KMP)

子串的定位操作通常稱作串的模式匹配,關於串的模式匹配演算法主要介紹兩種 1.brute force簡稱為bf演算法,也稱簡單匹配演算法,在給出的字串中尋找和需要匹配的字串相同的部分,為了簡潔就稱給出的長字串為目標串,需要匹配的字串為模式串。用bf演算法進行匹配的時候,同時從目標串和模式串開始,如果第...

字串模式匹配(BF演算法和KMP演算法)

字串模式匹配 在主串s中尋找子串t,若主串第i個下標開始的字串同子串t完全相同,則返回下標i,若遍歷完主串s未找到匹配,則返回 1。bf brute force 演算法 bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元 若不...