糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > PAT 1040有几个PAT

PAT 1040有几个PAT

时间:2019-11-07 17:54:54

相关推荐

PAT 1040有几个PAT

字符串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

分析:

对于每个A,PAT的个数就等于其前面‘P’的个数乘以后面‘T’的个数.所以先求出字符串中‘T’的总数,然后循环每次遇到‘P’,那么P_count++,每次遇到‘T’,T_count--

每次遇到‘A’,求出P_count与T_count的乘积,将每次乘积加起来,得到结果.(这么聪明的方法肯定不是我这种没脑子的人想出来的,是借鉴别人的).

源代码:

#include<iostream>

#include<string>

using namespace std;

int main()

{

string str;cin>>str;

int result,P_count,T_count;

result=P_count=T_count=0;

for(int i=0;i<str.length();i++)

if(str[i]=='T')T_count++;

for(int i=0;i<str.length();i++)

{

if(str[i]=='P')P_count++;

if(str[i]=='T')T_count--;

if(str[i]=='A')

result=(result+(P_count*T_count%1000000007))%1000000007;//注意需要取模

}

cout<<result<<endl;

return 0;

}

如果觉得《PAT 1040有几个PAT》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。