兩種演算法主要差別就是指標回溯的位置,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的第二個字元 若不...