BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。

算法思想:
1、依次从主串的首字符开始,与模式串逐一进行匹配;
2、遇到失配时,则移到主串的第二个字符,将其与模式串首字符比较,逐一进行匹配;
3、重复上述步骤,直至能匹配上,或剩下主串的长度不足以进行匹配。

图解:

bf01.jpg

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