小枕(ly)


私信TA

用户名:dotcpp0661094

访问量:234

签 名:

等  级
排  名 27304
经  验 512
参赛次数 1
文章发表 1
年  龄 0
在职情况 学生
学  校 吉首大学
专  业

  自我简介:


解题思路:
对于输入的数据我们只需要辨别是否是字符c1和c2。对一个符合题目要求的子串来说,结尾一定是c2字符,开头为c1字符。因此只需要将每个c2字符前c1字符的个数相加即可。同时子串有长度n的限制,因此只能统计每个c2字符n-1个字符位置前的c1字符个数,而c2字符应该从数组的第n-1个位置开始有效。
注意事项:
子串的长度限制n数据int不能容下
参考代码:

#include

using namespace std;

char s[500002];

int main()

{

    long long n;

    cin >> n >> s;

    char begin, end;

    long long begini=0,sum=0;

    cin >> begin >> end;

    for (int i=n-1; s[i]; i++)

    {

        if (s[i-n+1] == begin) begini++;

        if (s[i] == end)

        {

            sum += begini;

        }

    }

    cout << sum << endl;

}

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区