记录下来这段代码。
int BF1(char S[],char T[]){//S[]是原文,T[]是用来匹配的
int i=0;
int j=0;
int sum=0;
while(i<S.length){
if(S[i]==T[j]){
i++;
j++;
if(j>=T.length){
sum=sum+1;
j=0;
}
}
else{
i++;
j=0;
}
}
return sum;
}
BF算法(其中S[0],T[0]中存放的是数组的长度,所以i,j从1开始)
①int BF(char S[],char T[]){
int i=1;
int j=1;
while(i<=S[0]&&j<=T[0]){
if(S[i]==T[j]){
i++;
j++;
}
else{
i=i-(j-1)+1;
j=1;
}
}
if(j>T[0]) return (i-j+1);
else return 0;
}
②int BF(char S[],char T[]){
int i=1;
int j=1;
int start=1;
while(i<=S[0]&&j<=T[0]){
if(S[i]==T[j]){
i++;
j++;
}
else{
start++;
i=start;
j=1;
}
}
if(j>T[0]) return start;
else return 0;
}
点开首页看到的一句话,“有些代码不应该被忘记,也没有源代码不应该被记住。”