看到网上有很多关于BF算法的文章,但作为小白的我感觉看起来不懂,很多都是很生涩的内容,所以我打算自己写一篇。
BF:比较简单的一种字符串匹配算法,在处理简单的数据时候就可以用这种算法,完全匹配,速度很慢,时间复杂度最坏情况O(M*N)(M,N分别为2个字符串的长度)。
附上数字下标为1开始的字符数组的BF算法
int BFindex(String S, String T)
{
if (S.size() < 1 || T.size() < 1 )
return -1;
int i = 0, j = 0;
while (i < S.size() && j < T.size())
{
if (S[i] == T[j])
{
++i; ++j;
}
else
{
i = i- j+ 2;
j = 1;
}
}
if(j > T[0]) return i - T[0];
return ERROR;
}
数组下标从0开始的BF算法
for(int j=0,i=0;j<len2&&i<len1;){
if(a[i]==b[j]) {
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
if(j==len2)
{
flag=1;
break;
}
}