哈尔滨理工大学软件与微电子学院程序设计竞赛(新生赛)-同步赛 S-小乐乐与字符串

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述
在庆祝祖国母亲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
输入
CCHNCHN
输出
7
示例2
输入
CCHNCHNCHNCHN
输出
30

这题居然没有做出来,心塞塞,看了别人的代码有一种醍醐灌顶的感觉(该死的菜)

先反思一下,做的时候脑袋很糊,不小心看了下某企鹅接收到了一些与我有关的消息通知……然后……三心二意……(借口……不认真做题还有讲道理了……不讲道理……) 打代码打着打着想保留这个子序列的顺序,刚开始是想开数组存他和他前面的字符数量来着,后来做到一半发现没有必要啊(事实上的确没必要)

但是没必要的这个方式我写到一半又卡住了可能是还没想太明白……所以打不连贯,

在这里先贴代码再解释吧

仔细看一下代码,a存的是字符串当前从0开始的c的个数,每次遇到h都会加上a的数量(这是因为之前的每个c都可以和h一起作为子序列cha的一个小部分,)同理,到最后那个a也是一样前面的每一种ch都可以和遇到的a一起成为最终答案的一个可能。(怎么感觉讲起来绕绕的……

结束了

来源:陈杉菜

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月6日
下一篇 2019年10月7日

相关推荐