【基础练习】字符串

小乐乐与字符串

http://www.nowcoder.com/questionTerminal/e09de1fc11db4a438cf8f0668848660d

题目描述
在庆祝祖国母亲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”的数量

解题思路
可以先找C的子序列,那么遇到H的话就组成CH此时有C个"CH”序列,同理,当你找到“N”的时候,就是“CH“还有"N组成的“CHN”,"CH“的个数就是“CHN”的个数,把个数做累加。

代码

#include&lt;iostream&gt;
using namespace std;

int main()
{
    ios::sync_with_stdio(0);//而这段语句可以来打消iostream的输入 输出缓存,可以节省许多时间
    string s;
    cin &gt;&gt; s;//输入s
    long long ans = 0;//初始化为0
    long long sum = 0;//初始化为0
    int c=0, h=0;//初始化为0
    int u;
    for (int i = 0; i &lt; s.size(); i++)//s.size(),字符串s的长度
    {
        if (s[i] == &#39;C&#39;)//如果第一个符合C
        {
            c++;
        }
        else if (s[i] == &#39;H&#39;)//遇到H的话就组成CH此时有C个&quot;CH”序列
        {
            h += c;
        }
        else if(s[i]==&#39;N&#39;)//找到“N”的时候,就是“CH“还有&quot;N组成的“CHN”
        {
            ans +=h;//个数做累加
        }
    }
    cout &lt;&lt; ans &lt;&lt; endl;//输出结果
    return 0;
}
全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
昨天 13:48
门头沟学院 C++
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务