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);
    }
}
全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务