暴风(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串s的第一个字符与模式串q的第一个字符进行匹配,若相等,则继续比较s的第二个字符和 q的第二个字符;若不相等,则比较s的第二个字符和q的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MAXLEN 100
int BFMatch(char *s,char *p);
int main(void)
{
char s[MAXLEN] = {"ooogoodoo"};
char p[MAXLEN] = {"good"};
int flag = BFMatch(s,p);
if(flag == -1)
printf("匹配失败!\n");
else
printf("匹配成功,从目标串s[%d] = %c处开始匹配",flag,s[flag]);
return 0;
}
int BFMatch(char *s,char *p)
{
int m,n;
m = strlen(s);
n = strlen(p);
for(int i=0; i<m; ++i)
{
for(int j=0; j<n; ++j)
{
if(j==n-1)
return i;
if(s[i+j] != p[j])
break;
}
}
return -1;
}