BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
算法思想:
1、依次从主串的首字符开始,与模式串逐一进行匹配;
2、遇到失配时,则移到主串的第二个字符,将其与模式串首字符比较,逐一进行匹配;
3、重复上述步骤,直至能匹配上,或剩下主串的长度不足以进行匹配。
图解:
C语言实现:
int brute_force_match(char *t, char *p)
{
int i, j, tem;
int tlen = strlen(t), plen = strlen(p);
for(i = 0, j = 0; i <= tlen - plen; i++, j = 0)
{
tem = i;
while(t[tem] == p[j] & j < plen)
{
tem++;
j++;
}
/*匹配成功*/
if(j == plen) {
return i;
}
}
/*没有匹配到子串*/
return -1;
}
附件:
bf.c