日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言经典例96-计算字符串中子串出现的次数

發布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言经典例96-计算字符串中子串出现的次数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1 題目
  • 2 分析
  • 3 實現
  • 4 運行結果

1 題目

計算字符串中子串出現的次數

2 分析

串的模式匹配在數據結構中有KMP算法,但這個算法實現起來繁瑣,難度很大,所以對于一般來說,使用暴力法求解,設有字符串str和子串sub,第一輪循環從str的第一個字符開始,設置一個位置標號j,再與子串sub逐個比較,若比較相同的話,則位置標號向后移,比較下一個字符,出現第一個不相同字符則該輪比較結束,比較結束后若j的值和sub字符串長度相同,則說明找到一個子串,計數count遞增,第二輪循環則從str的第二個字符開始比較, 依次類推。

另外在string.h有函數strstr(),該函數返回在 haystack 中第一次出現 needle 字符串的位置,如果未找到則返回 null。函數原型如下:

char *strstr(const char *haystack, const char *needle)
  • haystack – 要被檢索的 C 字符串。
  • needle – 在 haystack 字符串內要搜索的小字符串。

3 實現

#include <stdio.h> #include <string.h>int subString(char *str,char *sub) {int count = 0, i, j;for (i = 0; i < strlen(str); i++) {for (j = 0; j < strlen(sub); j++) {if(str[i + j] != sub[j]) {break; // 出現了不同字符就退出循環}}if (j == strlen(sub)) {count++; // 退出循環后若j的值等于子串的長度,則存在子串}}return count; }int main(void) {char str[100],sub[50];printf("請輸入母串:");gets(str);printf("請輸入子串:");gets(sub);printf("%d", subString(str,sub));return 0; }

4 運行結果

請輸入母串:abcaabcaadbbc 請輸入子串:bc 3

總結

以上是生活随笔為你收集整理的C语言经典例96-计算字符串中子串出现的次数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。