列表

详情


NC25125. abc

描述

给出一个字符串s,你需要做的是统计s中子串”abc”的个数。子串的定义就是存在任意下标a<b<c,那么”s[a]s[b]s[c]”就构成s的一个子串。如”abc”的子串有”a””b””c””ab””ac””bc””abc”

输入描述

一个字符串s。保证输入只包含小写拉丁字符。

输出描述

一个整数表示s中子串”abc”的个数。

示例1

输入:

abcabc

输出:

4

原站题解

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

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 620K, 提交时间: 2020-03-27 11:22:19

#include <stdio.h>
char s[100010];
int main()
{
	long long a=0,b=0,ans=0;
	scanf("%s",s);
	for(int i=0;s[i];i++)
	{
		if(s[i]=='a')a++;
		else if(s[i]=='b')b+=a;
		else if(s[i]=='c')ans+=b;
	}
	printf("%lld\n",ans);
}

C++11(clang++ 3.9) 解法, 执行用时: 8ms, 内存消耗: 616K, 提交时间: 2020-02-26 14:12:14

#include<bits/stdc++.h>
using namespace std;
string s;
long long a,b,c;
int main()
{
	cin>>s;
	for(int i=0;i<s.length();i++)
	{
		if(s[i]=='a') a++;
		if(s[i]=='b') b+=a;
		if(s[i]=='c') c+=b;
	}
	cout<<c<<endl;
}

Python3(3.5.2) 解法, 执行用时: 44ms, 内存消耗: 3684K, 提交时间: 2019-09-06 22:28:49

s=input()
a=ab=abc=0
for i in s:
	if i=='a':a+=1
	elif i=='b':ab+=a
	elif i=='c':abc+=ab
print(abc)

上一题