A. 小智的疑惑

· · 题解

原题传送门 采用博客使用更佳

题目大意: 给定一个字符串,求字符串中出现了多少次 chuanzhi

做题思路:

1. 输入。

2. 进行一遍循环。要确定循环条件,下标要定为到 s.size()-6,因为子串长度为 7。在循环时,要进行一次判断,判断在下标为 i 时能否出现子串,进行累加。

3. 输出最终答案。

代码如下:

#include<bits/stdc++.h>//万能头文件(不建议新手使用)
using namespace std;
string s;
long long sum=0;//定义
int main()
{
    cin >> s;//输入
    for(int i=0;i<s.size()-6;i++)//循环
        if(s[i]=='c'&&s[i+1]=='h'&&s[i+2]=='u'&&s[i+3]=='a'&&s[i+4]=='n'&&s[i+5]=='z'&&s[i+6]=='h'&&s[i+7]=='i')//判断条件
            sum++;//进行累加
    cout << sum << endl;//输出答案
    return 0;//结束
}

做法二:使用 STL

1. 使用 string 类型中的 find 函数进行查找。

2. 循环找出字串,进行累加。

3. 输出答案。

代码如下:

#include<bits/stdc++.h>
using namespace std;
long long sum=0,xiabiao; 
string s;
int main()
{
    cin >> s;
    while(s.find("chuanzhi",xiabiao)!=string::npos)
    {
        xiabiao=s.find("chuanzhi",xiabiao)+1;
        sum++;
    }
    cout << sum << endl;
    return 0;
}