题目描述:
字符串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
提交代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <stdio.h> #include <string.h> const int maxn = 100000; const int mod = 1000000007; char ch[maxn]; int left[maxn]={0}; int main(void) { //gets(ch); scanf("%s",&ch[0]); int len=strlen(ch); int i; for(i=0;i<len;i++){ if(i>0){ left[i]=left[i-1]; } if(ch[i]=='P'){ left[i]++; } } int ans=0,right=0; for(i=len-1;i>=0;i--){ if(ch[i]=='T'){ right++; }else if(ch[i]=='A'){ ans=(ans+left[i]*right)%mod; } } printf("%d",ans); return 0; } |