
#include<stdio.h>
#include<string.h>
//BF算法的时间复杂度:O(n*m)
int BF(char *s,char *p,int pos)
{
if(s == NULL&&p == NULL)
{
return -1;
}
int lens = strlen(s);
int lenp = strlen(p);
if(lens < lenp)
{
return -1;
}
int i = pos;
int j = 0;
while(i < lens && j < lenp)
{
if(s[i]==p[j])
{
i++;
j++;
}
else//失配,从初始比较位置的下一个开始重新比较
{
i = i-j+1;
j = 0;
}
}
//两种退出方式,判断是哪一种
if(j >= lenp)
{
return i-j;
}
return -1;
}
int main()
{
char *s = “ababcabcdababcde”;
char *p = “abcd”;
printf("起始位置: %d\n",BF(s,p,0));
return 0;
}
4683

被折叠的 条评论
为什么被折叠?



