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);
}
}
查看29道真题和解析


