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

202112C语言三级真题(子串计算) 子串计算 给出一个只包含0和1的字符串(长度在1到100之间),求其每一个子串出现的次数。 时间限制:1000 内存限制:65536 输入 一行,一个01字符串。 输出 对所有出现次数在1次以上的子串,输出该子串及出现次数,中间用单个空格隔开。按子串的字典序从小到大依次输出,每行一个。 样例输入 10101 样例输出 0 2 01 2 1 3 10 2 101 2 思路: 利用双重循环,找到所有的子集,然后统计遍历,如果出现次数大于1的,就输出 #include<iostream> #i 阅读详情
AI摘要

本文介绍了一种计算字符串中子串出现次数的方法,包括使用暴力法进行串的模式匹配,以及利用C语言实现的具体代码示例。通过双重循环对比母串与子串的每个字符,若完全匹配则计数器加一,最终返回计数结果。

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语言练习百题之计算字符串中子串出现的次数 如果字符串规模较小,且不涉及大量匹配操作,暴力法是一个简单直观的选择。如果需要处理大规模字符串,特别是当子串较短时,推荐使用KMP算法或者Boyer-Moore算法,它们可以显著提高匹配效率。在KMP算法和Boyer-Moore算法中,Boyer-Moore算法在实际应用中可能更优,但需要付出更多的实现成本。 阅读详情

相关推荐

统计字符串的某一子串在字符串中的出现次数(C语言实现)

int get_count(char * src,char * dst); /* src 主串 dst 子串 */#include <stdio.h>#include <string.h>int get_count(char *,char *);int main() { char str1[10]="aaaacaaa"; char str2[10]="aa"; int

行者无疆 1万+

c语言字符串子串问题,C语言计算字符串子串出现的次数

#include#includeint substring(char *str,char *str1);//函数原型int main(void){char str[64]={0};char str1[16]={0};int i,j,x;printf("please put the string\n");gets(str);//输入的原字符串puts(str);printf("\n");printf...

weixin_42164685的博客 3850

【C语言】计算字符串中子串出现的次数

#include <stdio.h> #include <stdlib.h> #include<conio.h> int main() { char str1[20]; char str2[20]; char *p1, *p2 = NULL; int count = 0; printf("请输入两个字符串:\n"); scanf("%s%s", &a...

ZD_012的博客 2412

计算字符串中子串出现的次数

#include <stdio.h> #include <stdlib.h> # include <string.h> //计算字符串中子串出现的次数 int main() { char str1[100],str2[100]; //定义两个字符数组分别放字符串和子串 int len1,len2,i,n,j; n=0; printf("请输入字符串!\n"); gets(str1);

qq_48204413的博客 1123

C语言试题159之计算字符串中子串出现的次数

题目:两个字符串连接程序 想获取更多C语言题目请猛搓这里==========》200个C语言题目目录汇总

码莎拉蒂 1768

零基础手把手教你做FMEDA

本文通过分步骤手把手来教大家具体如何做FMEDA,希望对工作中要做FMEDA的童鞋有帮助。对于工作当中用不到FMEDA的童鞋,也可以作为科普知识,更好地了解一下FMEDA及硬件功能安全。

NewCarRen的博客 9926

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

ps:开始总是把问题想的很复杂,写的也很复杂-_-||

jlfcc的博客 425

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 346

题目96:计算字符串中子串出现的次数。

str1 = input("please enter a string:") str2 = input("please enter a sub string:") count = str1.count(str2) print("在str1中str2出现的次数为:",count)

qq_41900006的博客 518

微波射频学习笔记18-------偶极子天线和微波天线设计介绍

几种天线设计方法的介绍 一、偶极子天线 1.天线模型 两根紧挨着的金属导体,长度均为四分之一波长,直径均远小于波长,两导体间距也远小于波长。 2.天线性能的设计因素 ① 单个导体长度L:(光速/频率)/4=四分之一波长(在空气中传播的波长),但在导体中传播,波长会变短; ② 导体半径R:远小于波长即可,使用导电率高些的材料,市面上常见直径零点几毫米就挺好,或者用波长/200,得出一个小200的值,也算远小于波长; ③ 两导体间距S:远小于波长即可,可以比半径更小点。 以上三个变量L、R、S,均可在仿真软件

Sil_sprout 1万+

Claude Code VSCode集成开发指南:AI编程助手完整配置

Claude Code与Visual Studio Code的深度集成为开发者提供了强大的AI编程支持。本文详细介绍Claude Code VSCode扩展的安装配置、功能特性和实际应用方法。通过完整的配置流程和代码示例,帮助开发者充分利用Claude AI的智能编程能力。文章涵盖从环境搭建到高级功能应用的完整指南,包括代码自动补全、智能重构、实时代码分析等核心功能的使用技巧,以及与现有开发工作流的整合方案。

2501_93058131的博客 5980

输入一个字符串,计算字符串中子串出现的次数

输入一个字符串,计算字符串中子串出现的次数 字符串:“hellosdfdshellodsfdshello” 子串:“hello” 代码如下: #include #include int main() {     char * c = "hellosdfdshellodsfdshello";     char * d = "hello";     int n;     in

lou__001的博客 1万+

SAP UI5 主题设置全解析:从启动参数到运行时切换、跨域白名单与事件监听

SAP UI5主题体系深度解析:从配置到切换的完整指南 摘要:SAP UI5主题机制远不止CSS换肤,其工程化实践涵盖启动配置、运行时API切换、跨库路径映射及安全管控等关键环节。通过bootstrap标签或URL参数设置初始主题,运行时可用Theming.setTheme无刷新切换。自定义主题需配置theme-roots路径,跨域加载需声明sap-allowed-theme-origins白名单。主题切换完成后会触发applied事件,适合执行视觉同步操作。该体系支持多品牌适配、集中式主题管理,在Fior

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 326

C语言每日一练——第3天:计算字符串中子字符串出现的次数

C语言每日一练 2021年9月11日 类似于重写strstr,匹配子字符串。

Super辉sir的博客 4187

无监督学习与互信息

在机器学习中,获取大量高质量标注数据成本高昂。为解决此问题,无监督学习利用丰富的无标注数据成为研究重点。其中,互信息是衡量两个随机变量之间依赖关系的关键指标,能够捕捉非线性统计关联,非常适合处理非结构化数据。通过最大化神经网络中变量间的互信息,可以有效地从无标注数据中提取有用信息,提升模型在下游任务(如分类)的性能。互信息与熵密切相关,其值等于联合分布与边缘分布乘积间的KL散度,也可通过熵与条件熵的差值得出,具有对称性,并反映了已知一个变量后另一个变量不确定性的减少。

盼小辉丶的博客 3521

第 10 篇:深度学习的“军火库”——CNN、RNN与Transformer,AI如何看懂世界?

深度学习的革命,不是依赖单一的通用大脑,而是为不同任务打造了专属“军火库”:CNN用“局部感知”看懂图像,RNN用“循环记忆”理解序列,而Transformer则用“全局注意力”开启了AIGC时代。理解这些架构,不是记忆孤立的技术,而是洞察AI从“专才”走向“通才”的进化脉络。

maqh_csdn的博客 786

字符串中子串出现的次数

/*字符串中子串出现的次数*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 100 //函数声明 int number(char *,char *); void main() { char *s; char *son; int num; s=(char *)mal...

假技术Po主 1220

vue3 - 高德地图定位出错Get ipLocation failed.Geolocation permission denied.(info: “FAILED“ | status: 0)报错解决!

vue3,nuxt3,高德地图,定位,位置,报错,AMap.Geolocation,解决报当前定位失败,高德地图H5 定位失败报错,web网页网站,报错详细解决教程,Get ipLocation failed.Geolocation permission denied.,高德地图定位报错info: "FAILED",高德地图status: 0,已经是https了还是报错,确保了浏览器位置已经开了,手机定位也开了,没解决,H5页面在ios的浏览器上使用 高德地图 报当前定位失败Geolocation,移动端设

✅ 精选推荐文章 6771

计算字符串中子串出现的次数 C语言

输入一个字符串,计算字符串中子串出现的次字数 最主要的就是 strncmp函数 int strncmp(const char* str1,const char* str2,size_t num) 功能:指定长度比较 返回值:同strcmp 通过循环从父串开始的位置向后逐一比较即可 若有疑问,可以评论区留言,我会及时回复。 /* * 在字符串中 * 检索子串出现的次数 */ #include <stdio.h> #include <string.h> #include <s

sjsnisjeiej的博客 3771

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C语言 计算字符串中子字符串出现的次数

C语言 计算字符串中子字符串出现的次数,求子字符串在字符串中的个数

weixin_57061112的博客 2806

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C语言统计字符串中子串在主串中出现的次数

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> int strNum(char *str,char* subStr) { char* p = strstr(str, subStr); int count = 0; while (p != NULL) { count++; p += strlen(subStr); p =

qq_45164331的博客 4166

C语言程序题 计算字符串中子串出现的次数。

计算字符串中子串出现的次数。

weixin_45241469的博客 1402

C语言笔试题计算字符串中子串出现的次数

笔试题:计算字符串中子串出现的次数 /* @brief:计算字符串中子串出现的次数 @param:*str接收字符串的首地址 @param:*substr接收子串的首地址 return:返回子串出现的次数 */ int substr_num(char *str, char *substr) { /** 记录子串出现的次数 */ int cnt = 0; char *ptr = st...

HKpeng的学习记录 1102

字符串中子串出现的次数 c语言实现

字符串中子串出现的次数,加油!

weixin_66033926的博客 2976

C语言:计算字符串中子串出现的次数 。

计算字符串中子串出现的次数。

m0_64391998的博客 749
上一篇: C语言经典例86-两个字符串连接
下一篇: C语言经典例97-输入字符写入文件
syzdev
博客等级 码龄9年 852粉丝 149原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值