目录
1.BF算法原理
BF算法本质是上是双重for循环。只是用一个循环来实现的通过j=i-j+1;的方式将主串的下标从“头”开始遍历。
代码如下:
int BF(const char* S, const char* T)
{
if (S == NULL || T == NULL)
{
return -1;
}
int lenstr = strlen(S);
int lensub = strlen(T);
int i = 0;
int j = 0;
while (i < lenstr && j < lensub)
{
if (S[i] == T[j])
{
i++;
j++;
}
else
{
i = i - j + 1;//利用这个公式将i回退到对应的位置
j = 0;
}
}
if (j >= lensub)
{
return i - j;
}
else
return -1;
}
2.KMP算法原理
假设dadstr是主字符串,sonstr是子字符串,这两者是要比较的子字符串是否在主字符串中的字符