列表

详情


NC213876. CCA的字符串

描述

给定一个仅由大写字母和小写字母组成的字符串。
一个字符串是“牛”的,当且仅当其有一个子串为“NowCoder”(区分大小写)。
问给定字符串有多少个子串是“牛”的。

输入描述

一行,一个字符串。

输出描述

一行,一个数表示答案。

示例1

输入:

NowCoderNowCode

输出:

8

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 8ms, 内存消耗: 432K, 提交时间: 2020-12-31 14:48:02

#include <stdio.h>
main()
{
	int i;
	long long sum,cnt;
	sum=0;
	cnt=0;
	char s[100005];
	scanf("%s",s);
	for(i=0;s[i+7]!=0;i++)
	{
		if(s[i]=='N'&&s[i+1]=='o'&&s[i+2]=='w'&&s[i+3]=='C'&&s[i+4]=='o'&&s[i+5]=='d'&&s[i+6]=='e'&&s[i+7=='r'])
		sum=i+1;
		cnt=sum+cnt;
	}
	printf("%lld",cnt);
}

C++(clang++11) 解法, 执行用时: 12ms, 内存消耗: 668K, 提交时间: 2021-01-30 11:28:30

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	string s;
	cin>>s;
	long long sum = 0;
	for(int i=0,now=-1;i<s.size();i++){
		if(s.substr(i,8)=="NowCoder"){
			sum+=((i-now)*(s.size()-i-7));
			now=i;
		}
	}
	cout<<sum;
	return 0;
}

Python3(3.9) 解法, 执行用时: 46ms, 内存消耗: 6904K, 提交时间: 2021-05-12 13:34:36

s=input()
ans=0
n=len(s)
i=0
while True:
    j = s.find("NowCoder",i)
    if j==-1:
        break
    ans+=(j-i+1)*(n-j-7)
    i = j+1
print(ans)

上一题