/* 計算字符串中子串出現的次數。 算法:字符串最長匹配原則,以下是圖解: 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); }