C语言刷题系列——11.小乐乐与字符串

news/2024/11/28 7:38:40/

🚩统计s中子序列“CHN”的个数

  • 💜一) 题目要求
  • 💙二) 题解
    • 法1:暴力算法
    • 法2.找规律,累加

💜一) 题目要求

描述

在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子序列“CHN”的个数。

子序列的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子序列。如“ABC”的子序列有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。

💦“子序列”类似数学中某集合非空子集的概念

输入描述:

输入只包含大写字母的字符串s。(1 ≤ length ≤ 8000)

输出描述:

输出一个整数,为字符串s中子序列“CHN”的数量。

💙二) 题解

法1:暴力算法

以实例1为例,输入:CCHNCHN,输出:7
先明白为什么结果是7↓
😈给这个字符串"CCHNCHN"中每个字母从左到右依次编号1234567,那么出现"CHN"的情况:

  1. 134
  2. 137
  3. 167
  4. 234
  5. 237
  6. 267
  7. 567

思路:找到一个C,继续向后查找H;找到一个H,向后继续查找N
💔但是这样暴力解题用到多层循环,复杂度过大,提交不通过

#include <stdio.h>
#include <string.h>int main()
{char s[8000];scanf("%s", s);int count = 0;int len = strlen(s);for (int i = 0; i < len; i++){if (s[i] == 'C'){for (int j = i + 1; j < len; j++){if (s[j] == 'H'){for (int ss = j + 1; ss < len; ss++){if (s[ss] == 'N')count++;}}}}}printf("%d", count);return 0;
}

法2.找规律,累加

📘因此,我们可以先找以C开头的子序列,那么遇到H的话就组成"CH",也就是说"CH"的个数取决于C的个数,同理,当你找到“N”的时候,就是“CH“还有"N组成的“CHN”,"CH“的个数就是“CHN”的个数,把个数做累加。

#include <stdio.h>
#include <string.h>
int main()
{char s[8000];scanf("%s", s);int len = strlen(s);long long int count_c = 0, count_h = 0, count_n = 0;for (int i = 0; i < len; i++){if (s[i] == 'C')count_c++;else if (s[i] == 'H')count_h += count_c;else if (s[i] == 'N')count_n += count_h;}printf("%lld", count_n);return 0;
}

http://www.ppmy.cn/news/3417.html

相关文章

2022年航空与物流行业研究报告

第一章 行业概况 航空与物流行业是指以各种航空飞行器为运输工具&#xff0c;以空中运输的方式运载人员或货物的企业。航空公司是以各种航空飞行器为运输工具为乘客和货物提供民用航空服务的企业。航空公司使用的飞行器可以是他们自己拥有的&#xff0c;也可以是租来的&#x…

十一月券商金工精选

✦ 研报目录 ✦ ✦ 简述 ✦ 按发布时间排序 国信证券 财报中的竞争对手分析能否用来预测股票收益&#xff1f; 发布日期&#xff1a;2022-11-01 关键词&#xff1a;股票、文本分析、竞争对手 主要内容&#xff1a;竞争对手提及次数被定义为一家公司在全市场所有公司的最新…

基于Kubernetes容器云平台的CI/CD

基于 Kubernetes 实现 CI/CD 配置,其实和往常那些 CI/CD 配置并没有太大区别。都是通过 提交代码,拉取代码,构建代码,发布代码来实现的。 只不过要是通过 K8s 来实现的话,则是需要将构建好的代码打包成镜像,通过镜像的方式来运行。 项目参考: GitHub - zeyangli/devo…

做一个简单网页(做一个简单网页多少钱)

怎样做一个简易的网页&#xff1f;做一个简单网页多少钱 做一个简易的普通网页比较容易。当然&#xff0c;制作的方法有好几种&#xff0c;有的是直接写代码、有的是用绘图软件绘制页面再导出网页、常用的是使用网页制作软件做网页。下面以普通静态网页常规制作方法为例说明制…

java计算机毕业设计课程与成绩管理MyBatis+系统+LW文档+源码+调试部署

java计算机毕业设计课程与成绩管理MyBatis系统LW文档源码调试部署 java计算机毕业设计课程与成绩管理MyBatis系统LW文档源码调试部署本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&#…

python3.9.0 windows环境搭建

第一步&#xff1a; 下载安装包&#xff1a;CNPM Binaries Mirror 执行exe安装。。。。。 第二步&#xff1a;升级pip 和 setuptools&#xff08;避免在每一个虚拟环境中都要升级&#xff09; python -m pip install --upgrade pip python -m pip install --upgrade setuptoo…

微信小程序、h5兼容性问题(2)

企业微信小程序 分享参数 wx.qy.sendChatMessage 分享 前提条件&#xff1a; 必须是从企业微信聊天框侧边栏打开 优点&#xff1a; 只需要一步就可以直接分享&#xff0c;单对单分享 注意&#xff1a; 小程序消息打开后的路径&#xff0c;注意要以.html作为后缀 代码示例&#…

刷完 300 道 LeetCode 题后,我膨胀到要飘起来了!纯正 Java 版

算法题就好像科举考试时代背的八股文&#xff0c;是知识改变命运的代表作。你不刷&#xff0c;不管是校招还是社招&#xff0c;就很过算法题这一关。 我整理的这份 LeetCode 刷题笔记足足 300 道&#xff0c;对算法薄弱和需要提高算法的同学很有帮助。 随便打开一道题解感受下…