1. 程式人生 > >1040 有幾個PAT(25)(25 分)

1040 有幾個PAT(25)(25 分)

這道題關鍵是判斷A的左右有多少P和T將兩邊的個數相乘,開始遍歷陣列得出T的個數之後就從頭開始每遇到T countT就自減1     P就自加1之後遇到A就計算result,將每次的result相加就是結果。 

#include<iostream>

#include<string>
using namespace std;
int main()
{
string str0;
long long  countP, countT, result;
countP = 0;
countT = 0;
result = 0;
cin >> str0;
for (int i = 0; i < str0.length(); i++)
{
if (str0[i] == 'T')
countT++;
}
for (int i = 0; i < str0.length(); i++)
{
if (str0[i] == 'P') countP++;
if (str0[i] == 'T') countT--;
if (str0[i] == 'A')
{
result = result + countP * countT;
}
}
cout << result% 1000000007 <<endl;
return 0;

}