1040 有几个PATjava

    xiaoxiao2024-12-01  53

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

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

    输入格式:

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

    输出格式:

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

    输入样例:

    APPAPT

    输出样例:

    2 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ /** * 极其智障,一直超时,最后换成BufferedReader就不超时了 * */ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] inputString = br.readLine().toCharArray(); int len = inputString.length; int[] leftCount = new int[len]; for (int i=0; i<len; ++i) { char ch = inputString[i]; if (i>0) { leftCount[i] = leftCount[i-1]; } if (ch=='P') { leftCount[i]++; } } int sum = 0, rightCount = 0; for (int i=len-1; i>=0; --i) { char ch = inputString[i]; if (ch=='T') { ++rightCount; } else if (ch=='A') { sum = (sum + rightCount*leftCount[i])00000007; } } System.out.println(sum); } }

     

    最新回复(0)