BF算法~
先來看BF算法是干嘛的
BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是將目標(biāo)串S的第一個字符與模式串T的第一個字符進(jìn)行匹配,若相等,則繼續(xù)比較S的第二個字符和 T的第二個字符;若不相等,則比較S的第二個字符和T的第一個字符,依次比較下去,直到得出最后的匹配結(jié)果。BF算法是一種蠻力算法。(取自百度百科)
來看圖解詳細(xì)過程:
?還有在代碼中所說的不能以主串的越界條件來判斷是否將子串匹配完:
?
接下來來看代碼:
int BF_Search(const char* str, const char* sub, int pos)
{assert(str != NULL && sub != NULL);if (pos < 0 || pos >= strlen(str)){return -1;//pos = 0; 這種pos越界的情況默認(rèn)就是從頭開始}int len_str = strlen(str); //主串的長度int len_sub = strlen(sub); //子串的長度int i = pos;//主串開始遍歷的位置int j = 0; //子串開始的位置while (i < len_str && j < len_sub){if (sub[j] == str[i]){i++;j++;}else{i = i - j + 1;j = 0;}}//這會兒循環(huán)退出了 要不是i > len_str 或者就是 j > len_sub 又因?yàn)橹鞔欠裢顺霾荒艽碜哟c主串是否匹配成功 因此代碼為:if (j >= len_sub){return i - j;}else //主串匹配完也沒和子串匹配成功 則沒有找到 返回-1{return -1;}}
“要努力,但不要著急,任何碩果累累的結(jié)果都是過程的慢慢積累”
總結(jié)
- 上一篇: Linux终端C语言实现图片拷贝
- 下一篇: BF算法优化-------KMP算法