1. 程式人生 > >C語言 字串 統計字串子母串出現的次數

C語言 字串 統計字串子母串出現的次數

#include <stdio.h>
int main(void)
{
char str[20],substr[20];
int i,j,k,number=0;
printf("請輸入母串str:");
gets(str);
printf("請輸入子串substr:");
gets(substr);
for(i=0;str[i]!='\0';i++)//從母串開始遍歷
{
for(j=i,k=0;str[j]==substr[k];j++,k++)//我們每次遍歷的當前的一個母串的字元都要和子串的第一個字元開始比較,如果把子串遍歷完後就出現次數加一
{
if(substr[k+1]=='\0')
number++;
}
}
printf("substr在str出現的次數為%d\n",number);
return 0;

}

//本題的思路,就是一次遍歷母串。母串的遍歷的每一個字元都要和子串的第一個字元比較,如果的相等的話,這時候,母串和子串開始同時遍歷。只有

滿足條件當子串能成功的遍歷到結束符的時候,說明出現了一個子串加一。。比如母串為  aaccssbnm    子串為ac。。。開始的時候母串為a,子串也為a。但是還要執行,

因為不滿足if語句,還沒有遍歷玩子串。這時候我們有母串為第二個字元,子串也為第二個字元。這時候執行if語句時,遍歷完了子串。出現的次數就會加一。接下來一次類推

但是需要注意的時,母串每遍歷一個字元都要和子串相互比交(所以子串每次都要從第一個字元開始比較)