KMP算法和BF算法怎样改进找出子串在主串中的所有位置,最好用c语言或c++描述,谢谢了!
如下:
#include <stdio.h>
#include <string.h>
//查找big中出现smal的次数
void findstr(char*big ,char* smal,int pos[],int *nmb)
{
int i,j,lenb,lens;
lenb = strlen(big);
lens = strlen(smal);
*nmb = 0;
if(lens > lenb)
return;
i = 0;
while(i < lenb-lens+1)
{
for (j = 0; j < lens;j++)
{
if(big[i+j] != smal[j])
break;
}
if (j == lens) //说明找到
{
pos[*nmb] = i;
(*nmb)++;
i += lens;
}else
i++;
}
}
int main()
{
char big[100],sml[50];
int index[20],nmb=0;
int i;
gets(big);
gets(sml);
findstr(big,sml,index,&nmb);
for(i=0;i<nmb;i++)
printf("%d ",index[i]);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!