欢迎访问 生活随笔!

生活随笔

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

编程问答

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

发布时间:2025/6/17 编程问答 44 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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-计算字符串中子串出现的次数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。