如何從一個父串中找出子串的個數
阿新 • • 發佈:2019-01-08
題目要求:
輸入一個父字串,和一個子字串,編寫程式碼要求能夠實現計算出父串中子串的個數,例如:輸入父字串“hello”,輸入子字串“ll”,輸出結果為1。
程式碼如下:
#include <stdio.h> #include <string.h> void getSubCount(char *par,char *sub) { int sub_len = strlen(sub); int count = 0; while (*par != '\0') { if (strncmp(par,sub,sub_len) == 0) { par = par + sub_len; count++; } else { par++; } } printf("count = %d\n",count); } int main() { char par[100] = {0}; char sub[100] = {0}; printf("please input par string:\n"); gets(par); printf("please input sub string:\n"); gets(sub); getSubCount(par,sub); return 0; }
總結:主函式中先定義2個字元陣列(父串、子串),並輸入父串、子串,然後呼叫自定義函式;在自定義函式中,通過迴圈對父串進行遍歷,依次與子串比較,來獲得子串數目。
注意事項:
①strncmp(par,sub,sub_len) 的意思是連續比較par、sub之後的sub字串長度的字元;值若等於零,則說明連續sub字串長度的字元是相等的。
② par = par + sub_len 不能缺少;否則會造成子串數目計數過多,例如父串aaaaaa,子串aa,沒有此句的話,count = 5,加了之後count = 3。