YunYan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

链接: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

输入

复制
abcabc

输出

复制
4

备注:

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;
}

 



posted on 2019-09-06 23:05  Target--fly  阅读(182)  评论(0编辑  收藏  举报