#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 ...