字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。
现给定字符串,问一共可以形成多少个PAT?
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main() {
string s;
cin >> s;
int size = s.size()-1, i = 0,count=0, numAT=0,numT=0;
for (int i = size; i >= 0; --i) {
if ('T' == s[i]) ++numT;
else if ('A' == s[i]) numAT += numT;
else {
count += numAT;
if (count >= 1000000007) count %= 1000000007;
}
}
cout << count;
return 0;
}
注意要从后向前考虑。从前向后比较难以实现