C語言實現BF算法案例詳解
BF算法:
BF算法即暴風算法,是普通的模式匹配算法。BF算法的思想:將目標串S的第一個字符與模式串T的第一個字符進行匹配,若相等,則繼續比較S的第二個字符和 T的第二個字符;若不相等,則比較S的第二個字符和T的第一個字符,依次比較下去,直到得出最後的匹配結果。BF算法是一種蠻力算法。
圖示:
#include <stdio.h> #include <string.h> int BF(const char *s, const char* sub, int pos)//O(n*m) { int i = pos; int j = 0; int lens = strlen(s); int lensub = strlen(sub); while (i<lens && j<lensub) { if (s[i] == sub[j]) { i++; j++; } else { i = i - j + 1;//i退回到當前匹配失敗初始的下一個 j = 0;//j回退到0 } } if (j >= lensub) { return i - j; } else { return -1; } } int main() { char *s = "ababcabcdfabcde"; char *sub = "abcd"; printf("%d\n", BF(s, sub, 0)); return 0; }
到此這篇關於C語言實現BF算法案例詳解的文章就介紹到這瞭,更多相關C語言實現BF算法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!