计算字符串中子串出现的次数。

/*
计算字符串中子串出现的次数。
算法:字符串最长匹配原则,以下是图解:
abcabcabc
abc
循环遍历母串前lenT-lenP;
循环遍历字串,用j指向子串,用k记录每一趟母串开始的位置,若p[j]==t[k]则k、j均后移
若j==子串长度lenP,则找到一个子串,次数++。

*/
#include<stdio.h>
#include<math.h>
#include<malloc.h>
#include<string.h>
main()
{
    char T[100],P[100];
    gets(T);
    gets(P);
    int i,j,k,c=0,lenT,lenP;
    lenT=strlen(T);
    lenP=strlen(P);
    for(i=0;i<=lenT-lenP;i++){
        for(j=0,k=i;j<lenP&&P[j]==T[k];k++,j++);
        if(j==lenP) c++;
    }
    printf("%d\n",c);
}
posted @ 2020-01-11 20:23  dreamy_java  阅读(2160)  评论(0编辑  收藏  举报