题目描述

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

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

输入格式:

  输入只有一行,包含一个字符串,长度不超过10的5次方,只包含 P、A、T 三种字母。

输出格式:

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

输入样例:

APPAPT

输出样例:

2

代码

package com.hbut.pat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Pat_1040 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] c = br.readLine().toCharArray();
        long t = 0,at = 0, pat = 0;
        for (int i = c.length - 1; i>= 0; i--) {
            if (c[i] == 'T')
                t++;
            else if (c[i] == 'A')
                at = (t + at) % 1000000007 ;
            else
                pat = (pat + at) % 1000000007;
        }
        System.out.print(pat % 1000000007 );
    }
}