目录

1.问题描述

2.问题求解


1.问题描述

描述

在庆祝祖国母亲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”的数量。

题目链接小乐乐与字符串_牛客题霸_牛客网 (nowcoder.com)

2.问题求解

我们拿到题目第一反应想到的就是三个for循环暴力求解

#include<stdio.h>
int main()
{char s[8000] = { 0 };gets(s);int i = strlen(s);int a = 0;int b = 0;int c = 0;long long count = 0;for (a = 0; a < i - 2; a++){if (s[a] == 'C'){for (b = a + 1; b < i - 1; b++){if (s[b] == 'H'){for (c = b + 1; c < i; c++){if (s[c] == 'N')count++;}}}}}printf("%ld", count);return 0;
}

但是这里的字符串长度为8e3,于是我们暴力求解后便得到了它

我们为了算法简洁,我们想到这样一个办法,先遍历字符串,我们设定‘C’的数量为c,当我们遇到一个‘C’时,c++,当又遇到‘H’时我们以此时的下标向后进行一个for循环,碰到一个‘N’则有一个‘’CHN‘’字串。这样的方法就可以减少一次for循环,有效避免了超时的问题。

#include<stdio.h>
int main()
{char s[8000] = { 0 };gets(s);int i = strlen(s);int a = 0;int b = 0;int c = 0;long long count = 0;for (a = 0; a < i; a++){if (s[a] == 'C')b++;if (s[a] == 'H'){for (c = a + 1; c < i; c++){if (s[c] == 'N')count += b;}}}printf("%ld", count);return 0;
}

本文到此为止,感谢大家的阅读,欢迎大家点赞评论互关,祝大家万事如意。

《C语言进阶》小乐乐与字符串问题求解相关推荐

  1. 小乐乐与字符串(暴力+巧妙求解)

    目录 前言 一.暴力求解 二.巧妙求解 前言 描述: 在庆祝祖国母亲 70 华诞之际,老师给小乐乐出了一个问题.大家都知道 China 的英文缩写是 CHN,那么给你一个字符串 s,你需要做的是统计 ...

  2. c++ cstring 转换 char_C语言进阶之路:字符串与整数之间的转换!

    在C语言中,我们经常面临需要将字符串转换为整型,以及将整型转化为字符串的问题. 将字符串转换为整数的函数在stdlib.h中定义: int atoi(const char *str); atoi函数会 ...

  3. C语言进阶——字符函数和字符串函数

    作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:C语言从入门到进阶 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客 ...

  4. c语言野指针导致问题,C语言进阶之路(三)----野指针的产生原因及解决办法

    1.会产生野指针的做法 #include //这就是一种错误的写法 int main(){ int *p = NULL; p = (int *)malloc(); //释放P所指向的内存空间,但指针变 ...

  5. 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)---E---小乐乐匹配字符串(最长公共子序列)

    链接:https://ac.nowcoder.com/acm/contest/301/E 来源:牛客网 小乐乐有字符串str1,str2. 小乐乐想要给他们找朋友. 小乐乐想知道在这两个字符串中最多能 ...

  6. c语言字母存储,字符串在内存中的储存——C语言进阶

    字符串在内存中的存储--C语言进阶 字符串是以ASCII字符NUL结尾的字符序列.ASCII字符NUL表示为\0.字符串通常存储在数组或者从堆上分配的内存中.不过,并非所有的字符数组都是字符串,字符数 ...

  7. 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析

    之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...

  8. Go语言进阶,结构体与json字符串格式的互相转换

    对于结构体大家都很熟悉,是一种自定义类型,可以将不同类型的同属于这个类的属性(成员变量)集合在一起,换句话说这些成员变量属于键值对,那么这种也就是常见的json格式,我们来看下如何将结构体转成json ...

  9. 【C语言】BC90小乐乐算多少人被请家长(DAY 5)

    文章目录 题目描述 代码实现 重难点突破 BC90小乐乐算多少人被请家长 题目描述 描述 小乐乐的班主任想统计一下班级里一共有多少人需要被请家长,三个成绩(语文,数学,外语)平均分低于60的将被请家长 ...

最新文章

  1. 前端每日实战:100# 视频演示如何用纯 CSS 创作闪闪发光的霓虹灯文字
  2. Hibernate的数据查找,添加!
  3. Python流程控制语句
  4. 7 centos ssh 单机_虚拟机下CentOS7 开启SSH连接
  5. Struts 体系结构与工作原理(图)
  6. 算法竞赛入门经典 第二章总结
  7. java语法基础总结,顺利拿到offer
  8. 单点登陆_规避单点故障,MySQL 8.0 MGR软负载怎么选?
  9. Layui 表格渲染
  10. 循环冗余校验(CRC,模2运算)
  11. 沧小海笔记之PCIE协议解析——第二章 详述PCIE事务层
  12. JAVA WBE入门之HTML的使用(超详细,必看)附实例和代码
  13. 可以嵌入ppt的课堂点名器_宏大智慧课堂支招:孩子和学霸的差距,就在课上课下55分钟里...
  14. 面试HR常问的几个问题?
  15. 分享一些实用的手机应用
  16. c语言中字符画蛇,字符画:蛇
  17. 使用python的requests库实现书籍比价工具
  18. 数据库优化整理之:冷热分离
  19. android电视查看百度网盘,智能电视也能看百度网盘内的视频,通过当贝市场,方法超简单!...
  20. MySQL条件查询练习题(含答案)

热门文章

  1. checkbox获取勾选状态_jQuery判断checkbox选中状态
  2. 计算机应用小数的转换,电脑计算器进位制换算怎么不能输入小数
  3. 英雄无敌3 Heroes III 里面的英语单词 (转)
  4. tkinter使用canvas实现渐变色
  5. 家庭宽带搭建ipv6私人网盘
  6. 【算法思考】三维视觉常见问题
  7. 使用oschina的git服务器
  8. MHT代码阅读(1)
  9. 跳槽加薪谋发展还是等公司配股?
  10. 期末作业成品代码——绿色的餐饮美食网站(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码