当前位置: 代码迷 >> 综合 >> PAT (Basic Level) Practice 1040 有几个PAT
  详细解决方案

PAT (Basic Level) Practice 1040 有几个PAT

热度:42   发布时间:2023-12-16 08:09:59.0

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。

现给定字符串,问一共可以形成多少个 PAT

输入格式:

输入只有一行,包含一个字符串,长度不超过10?5??,只包含 PAT 三种字母。

输出格式:

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

输入样例:

APPAPT

输出样例:

2

 ps:借鉴了一下从后往前遍历的思路,题目一下子就变得简单了许多

#include<iostream>
#include<string>
using namespace std;int main()
{int i;string s;cin >> s;int coutT = 0, coutAT = 0, coutPAT = 0;int str = s.size();for (i = str - 1; i >= 0; i--){if (s.at(i) == 'T')coutT++;else if (s.at(i) == 'A')coutAT = (coutAT + coutT) % 1000000007;else if (s.at(i) == 'P')coutPAT = (coutPAT + coutAT) % 1000000007;}cout << coutPAT;return 0;
}

 

  相关解决方案