链接:https://ac.nowcoder.com/acm/contest/1083/A
来源:牛客网
给出一个字符串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<=|s|<=1e5
#include<bits/stdc++.h> using namespace std; string x; int main(){ cin>>x; int y=x.length(); int a=0,ab=0,abc=0; for(int i=0;i<y;i++){ if(x[i]=='a') a++;//表示a出现的次数 else if(x[i]=='b') ab+=a;//当出现b时,ab表示b之前的每一个a与b构成ab,其中a一共出现过a次 else if(x[i]=='c') abc+=ab;//ab表示,当出现c时,c之前的ab的数量。 } cout<<abc<<endl; return 0; }