字串匹配演算法 BMH演算法 C實現

2021-10-12 23:43:11 字數 894 閱讀 4923

#include #include #define maxchar 256

/* * 把壞子串的下一跳找出來

* */

void pre_process(char *patt, int m, int bm_bc)

//最後一次字元的值不需要計算,保留預設值m,或者使用0 ~ (m-1)內計算到的值

for ( k = 0; k < m-1; k++ )

printf("bm_bc[patt[%d]]=%d \n", 'g', bm_bc['g']);

printf("bm_bc[patt[%d]]=%d \n", 't', bm_bc['t']);

printf("bm_bc[patt[%d]]=%d \n", 'a', bm_bc['a']);

printf("bm_bc[patt[%d]]=%d \n", 'c', bm_bc['c']);

}int bmh(char *src, int n, char *des, int m);

int j = 0, k = 0, i = 0;

if ( m > n)

return -1;

pre_process(des, m, bm_bc);

//k 指src查詢遞增的過程;i指向src的當前比較位置;j指向匹配子串的位置

字串演算法 BMH

bmh演算法全稱是boyer moore horspool演算法。它不再像bm演算法一樣關注失配的字元,它的關注的焦點在於匹配文字每一次匹配失敗的最後乙個字元x,根據這個字元x是否在模板出現過來決定跳躍的步數,否則跳躍模板的長度。所以分了兩種情況 一 字元x不在模板p中,則跳躍的步數為模板p的長度 ...

典型字串匹配演算法實現 單字串匹配演算法

部落格源址 相信大家對快捷鍵ctrl f是做什麼用的都應該很熟悉了,無論是文字編輯 網頁瀏覽等程式上它都意味著字串搜尋,我們提供乙個關鍵字,它將找到當前頁面上的所有該關鍵字所在的位置。關鍵字稱為模式串,在文字t中尋找模式串p出現的所有出現的位置,解決這種問題的演算法叫做字串匹配演算法。字串匹配演算法...

字串匹配演算法 字串匹配演算法總覽

字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...