PAT 几个pat

来源:互联网 发布:淘宝举报中心网址 编辑:程序博客网 时间:2024/06/07 14:59

题目描述

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?

输入描述:

输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。


输出描述:

在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。

输入例子:

APPAPT

出例子:

2
解题思路: 从第一个字母开始搜索,由于需要组成PAT所以它的前边一定要先有P,在有PA,最后才能形成PAT。那么在出现A之前我先统计出现多少次P,那么就能出现多少次PA,然后到T的时候看有多少个PA,就有多少个PAT。
代码:
#include<iostream>#include<string>using namespace std;int main(){const int mod = 1000000007;int p = 0;int pa = 0;int pat = 0;string STR;cin >>STR;int i = 0;while (i<STR.length()){char CH = STR[i++];if (CH == 'P'){p++;p = p%mod;}else if (CH == 'A'){pa += p;pa = pa%mod;}else if (CH == 'T'){pat += pa;pat = pat%mod;}}cout << pat << endl;return 0;}