首先是BF算法,最简单,但是平均时间复杂度最高的
算法的思想是模式串和字串同时回溯
typedef struct {
char *ch;
int length;
}Str;
void bf(Str str,Str subStr){
int i=0,j=0,k=0;
while(i<str.length&&j<substr.length)
{
if(str.ch[i]==substr)
{
i++;j++;
}
else
{
i=++k;j=0;
}
}
if(j==substr.length)
{
return k;
}
}
MP的算法无非是 BF算法的改良,next数组的计算,用文本写伪代码真难受,下篇博客写next数组的计算