2020-10-19 有多少个PAT
有几个PAT(25)
http://www.nowcoder.com/questionTerminal/5e7d025e91ab468f909cb93d431b89c3
题目描述
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。
现给定字符串,问一共可以形成多少个PAT?
输入描述:
输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。
输出描述:
在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
输入例子:
APPAPT
输出例子:
2
解题思路:
1.要知道有多少个APT,就要知道每个T前面有多少AP
2.要知道有多少个AP,就要知道每一个P前面有多少个A
3.从前往后找,首先记录下A的数量,如果碰到P说明这里可以组成a个AP,累加即为ap+=a。找到t时证明前面可以组成ap个APT,即apt+=ap。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @ProjectName: 20201019牛客刷题 * @Package: test * @ClassName: APT * @Author: 民 * @Description: API * @Date: 2020/10/19 20:17 * @Version: 1.0 */ public class APT { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); char[] str = br.readLine().toCharArray(); int p = 0; int pa =0; int pat = 0; for (int i = 0; i < str.length; i++) { if(str[i]=='P'){ p++; }else if (str[i]=='A'){ pa+=p; pa%=1000000007; }else{ pat+=pa; pat%=1000000007; } } System.out.println(pat); } }