KMP算法和BF算法怎样改进能找出子串在主串中的所有位置

KMP算法和BF算法怎样改进找出子串在主串中的所有位置,最好用c语言或c++描述,谢谢了!

如下:

img

#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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632