2023-08-28 小练习_环形字符串的某子串出现次数

news2024/10/6 10:31:51

小练习环形字符串的某子串出现次数


老林的C语言新课, 想快速入门点此 <C 语言编程核心突破>


小练习_环形字符串的某子串出现次数

  • 前言
  • 一、具体算法
      • 描述
      • 输入
      • 输出
  • 二、代码
  • 总结


前言

最近看了一个提问, 问如何计算环形字符串的某子串出现次数, 其实算法比较简单, 增加在字符串结尾增加子字符串长度减一的字符即可.


一、具体算法

描述

求环形字符串中某个子串出现了几次

输入

两行:每行一个字符串;

第一行是环形字符串a

第二行是要查找的子串b

数据保证字符串长度小于等于1000,且子串b长度小于等于a

输出

子串出现次数

字符串"abacab", 子字符串"aba", 直接做环形好像比较难, 但其实环形比非环形多的情况就是子串b的一部分在a的末尾, 一部分在a的开头, 也就是在a后面最多补子串长度-1个字符, 这些字符来自a的头部.

见下图
示例
这样, 我们就把环形字符的子串查找变为普通字符串查找了.

二、代码

代码比较简单, 用了两个字符串函数 strncat()字符连接 和 strstr()查找子串:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char strA[1024];
char strB[1024];
 
int main()
{
    scanf("%s", strA);
    scanf("%s", strB);
 
    strncat(strA, strA, strlen(strB) - 1);
    const char *ptr = strA;
    int cnt = 0;
 
    while ((ptr = strstr(ptr, strB)))
    {
        cnt++;
        ptr++;
    }
 
    printf("%d\n", cnt);
}


总结

上面代码较为简单, 同时还有一个小陷阱, 重复子串, 比如 “aaabaaa”, 子串是"aa", 有兴趣的同学可以琢磨一下.


老林的C语言新课, 想快速入门点此 <C 语言编程核心突破>


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/939672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器数据恢复-reiserfs文件系统损坏如何恢复数据?

服务器数据恢复环境&#xff1a; 一台IBM X系列服务器&#xff0c;4块SAS硬盘组建一组RAID5阵列&#xff0c;采用的reiserfs文件系统。服务器操作系统分区结构&#xff1a;boot分区LVM卷swap分区&#xff08;按照前后顺序&#xff09;。LVM卷中直接划分了一个reiserfs文件系统&…

CSS基础选择器及常见属性

文章目录 一、CSS1、CSS简介2、CSS语法规范 二、CSS基础选择器1、选择器的作用2、选择器分类3、基础选择器标签选择器类选择器id选择器通配符选择器 三、CSS常见属性1、字体属性字体系列字体大小字体粗细文字样式 2、文本属性文本颜色对齐文本装饰文本文本缩进行间距 四、CSS引…

09微服务架构常见框架

一句话导读 微服务架构是一种分布式系统架构&#xff0c;可以将大型应用系统拆分为多个小型服务的一种架构方法。在微服务架构中&#xff0c;每个服务都是独立的逻辑单元&#xff0c;他们通过轻量级的通讯机制进行交互。为了更好的实现微服务架构&#xff0c;开发人员可以依赖一…

PMP P-10 Purchase Management

竟然不让上传图片了。。为啥&#xff1f;&#xff1f;&#xff1f;【上传过于频繁】行吧

搭建Serv-U FTP服务器实现外网远程访问,无需公网IP的文件共享方法

文章目录 1. 前言2. 本地FTP搭建2.1 Serv-U下载和安装2.2 Serv-U共享网页测试2.3 Cpolar下载和安装 3. 本地FTP发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 科技日益发展的今天&#xff0c;移动电子设备似乎成了我们生活的主角&#xff0c;智能…

2023最新官网下载安装配置JDK8(1.8u381)的详细步骤

目录 前言 一、下载 二、安装 三、配置环境变量 四、查看 前言 JDK11版本&#xff1a;官网下载JAVA的JDK11版本&#xff08;下载、安装、配置环境变量&#xff09;_java11下载_云边的快乐猫的博客-CSDN博客JDK17版本&#xff1a; Java官网下载JDK17版本详细教程&#xff…

Compose pager分页器入门使用 HorizontalPager与VerticalPager(2023/8)

Compose pager分页器入门使用 前言依赖概念介绍参数介绍 使用基础使用规范使用跳转指定分页器 pagerState.scrollToPage()添加指示器 pagerState.currentPage 完整代码总结 前言 阅读本文需要一定compose基础&#xff0c;如果没有请移步Jetpack Compose入门详解&#xff08;实…

说说我最近招人的感受。。

大家好&#xff0c;我是鱼皮。 都说现在行情不好、找工作难&#xff0c;但招人又谈何容易&#xff1f;&#xff01; 最近我们公司在招开发&#xff0c;实习社招都有。我收到的简历很多&#xff0c;但认真投递的、符合要求的却寥寥无几&#xff0c;而且都是我自己看简历、选人…

【EI检索稳定】第六届电力电子与控制工程国际学术会议(ICPECE 2023)

第六届电力电子与控制工程国际学术会议 2023 6th International Conference on Power Electronics and Control Engineering (ICPECE 2023) 第六届电力电子与控制工程国际学术会议由广西大学主办&#xff0c;重庆大学、华东交通大学、长春理工大学、大连交通大学联合主办。电…

伦敦金走势多变怎么办

投资知识比较丰富的朋友&#xff0c;应该知道一个品种的价格过于波动&#xff0c;对投资者来说并是一件不友好的事情&#xff0c;因为频繁的价格变化&#xff0c;对于收益的稳定性会产生负面的影响&#xff0c;也可能让投资者的持仓陷入进退维谷的尴尬境地。 黄金作为贵金属市场…

【视觉系统】笔芯内径机器视觉测量软硬件方案-康耐德智能

检测内容 笔芯内径机器视觉测量系统 检测要求 精度0.03mm&#xff0c;速度120~180个/分钟 视觉可行性分析 对样品进行了光学实验&#xff0c;并进行图像处理&#xff0c;原则上可以使用机器视觉系统进行测试测量。 结果&#xff1a; 对所有样品进行分析&#xff0c;可以在不…

抽象工厂(Abstract Factory)模式

一、 抽象工厂&#xff08;Abstract Factory&#xff09;模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。 为了方便引进抽象工厂模式&#xff0c;引进一个新概念&#xff1a;产品族&#xff08;Product Family&#xff09;。所谓产品族&#xff0c…

16- flask-bootstrap模板的使用

Flask 中支持 flask-bootstrap模板 和 bootstrap-flask模板 # 不使用: bootstrap-flask # pip install bootstrap-flask1.3.1 # 支持bootstrap 4 # pip install flask-bootstrap # 支持bootstrap3# 中文文档:https://flask-bootstrap-zh.readthedocs.io/zh/latest/ # 样式文档…

yolov8 No labels found in /path/train.cache解决

在用yolov8中ultralytics/datasets/coco.yaml训练时出现了no labels found in train2017.cache的错误。 model.train(data"ultralytics/datasets/coco.yaml",epochs100,imgsz640,batch16,save_period10,)下面查找一个这个问题出现的原因。 这里并没有提前下载coco数…

VM安装Windows11

VM下载地址&#xff1a; https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html Windows11镜像下载地址&#xff1a; https://www.microsoft.com/zh-cn/software-download/windows11/ 选择刚下载的Windows11镜像 更改安装目录 设置密码 …

MySQL索引,事务和存储引擎

一、索引 1、索引的概念 ●索引是一个排序的列表&#xff0c;在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址&#xff08;类似于C语言的链表通过指针指向数据记录的内存地址&#xff09;。 ●使用索引后可以不用扫描全表来定位某行的数据&#xff0c;而是先…

ASIC-WORLD Verilog(13)状态机FSM

写在前面 在自己准备写一些简单的verilog教程之前&#xff0c;参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好&#xff0c;奈何没有中文&#xff0c;在下只好斗胆翻译过来&#xff08;加点自己的理解&#xff09;分享给大家。 这是网站原文&…

MySQL 8.1.0 推出 InnoDB Cluster 只读副本

全面了解 8.1.0 版本新功能&#xff1a;InnoDB Cluster 只读副本的相关操作。 作者&#xff1a;Miguel Arajo 高级软件工程师 / Kenny Gryp MySQL 产品总监 本文来源&#xff1a;Oracle MySQL 官网博客 * 爱可生开源社区出品。 前言 MySQL 的第一个 Innovation 版本 8.1.0 已…

Pyqt5开发实战记录

入职以来第一个开发项目&#xff1a; 1、如何给Qlabel加边框&#xff1a;右键label对象&#xff0c;选择“改变样式表”输入一下代码&#xff1a; border: 1px solid black;2、如何让垂直布局中button大小不发生变化&#xff1a;其实很简单&#xff0c;只需要设置button的最大…

(视频教程)单细胞转录组多组差异基因分析及可视化函数

很久以前&#xff0c;我们发布过一个单细胞多组差异基因可视化的方法。跟着Cell学单细胞转录组分析(八):单细胞转录组差异基因分析及多组结果可视化。主要复现参考的是这篇发表在《Cell》上的文章。可以将多个组的差异结果展示出来。 &#xff08;reference&#xff1a;A Spati…