題目描述
字符串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
代碼:
#include<iostream>
using namespace std;
int main()
{
string str;
cin>>str;
int n=0;
int p[100005]={0};
int t[100005]={0};
if(str[0]=='P')
{
p[0]=1;
}
for(int i=1;i<str.size();i++)
{
if(str[i]=='P')
{
p[i]=p[i-1]+1;
}
else
{
p[i]=p[i-1];
}
}
for(int i=str.size()-1;i>=0;i--)
{
if(str[i]=='T')
{
t[i]=t[i+1]+1;
}
else
{
t[i]=t[i+1];
}
}
for(int i=1;i<str.size()-1;i++)
{
if(str[i]=='A')
{
n+=p[i]*t[i];
n=n%1000000007;
}
}
cout<<n;
return 0;
}