题目内容:

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

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

输入格式:

输入只有一行,包含一个字符串,长度不超过105,只包含 PAT 三种字母。

输出格式:

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

输入样例:

APPAPT

结尾无空行

输出样例:

2

结尾无空行

解题思路:

1.直接暴力会出现超时,本题最后两个测试点的用例应该很大,故本题的时间复杂度需要保持在O(n)以下,如果出现双层循环(即O(n^2))则会出现超时。

2.解决超时问题之后,对于结果count需要每次对 1000000007 取余数,最后对于1000000007 取余数的话,count的结果可能会溢出。

Java代码实现:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String str = br.readLine();int len = str.length(), result = 0, countp = 0, countt = 0;for (int i = 0; i < len; i++) { //先统计字符串中T的个数if (str.charAt(i) == 'T')countt++;}for (int i = 0; i < len; i++) {if (str.charAt(i) == 'P')   //遇到大P,P的个数+1countp++;if (str.charAt(i) == 'T')  //遇到大T,T的个数-1countt--;if (str.charAt(i) == 'A')  //遇到大A,计算当前PAT的个数+之前PAT的个数result = (result + (countp * countt) % 1000000007) % 1000000007;}System.out.println(result);}}

Java 1040 有几个PAT相关推荐

  1. Pat乙级 1040 有几个PAT

    Pat乙级1040 有几个PAT 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/9948052823899 ...

  2. PAT (Basic Level) Practise 1040 有几个PAT(DP)

    1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...

  3. C++学习之路 | PTA乙级—— 1040 有几个PAT (25 分)(精简)

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...

  4. 1040 有几个PAT (25 分)

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...

  5. 1040 有几个PAT (25 分) -- 测试点3 测试点4

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...

  6. PAT 乙级 1040 有几个PAT (25分)

    1040 有几个PAT (25分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位( ...

  7. 1040 有几个PAT (25 分)

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...

  8. PAT-B 1040. 有几个PAT(25)

    1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...

  9. 【PAT】乙级 1040 有几个PAT (25 分) c++

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...

最新文章

  1. Fibonacci数列Linux程序,Linux shell实现斐波那契数列编程
  2. 移动互联网时代的信息安全与防护_移动互联网时代,草根创业还有哪些机会?...
  3. CodeForces - 801C Voltage Keepsake(二分)
  4. 怎么修改ppt的虚线间隔_还有一小时下班,领导交给我一份ppt,做不完不许走!...
  5. vim 删除一行_Vim 日常命令
  6. 信创产业已成现象级新风口 代码“源头”安全该如何守护?
  7. 计算机libeay32.dll丢失怎么办,电脑libeay32.dll丢失的解决方法
  8. Active Directory攻防实验室环境搭建教程(一)
  9. html修改img图片颜色,html中img图片设置透明度的方法
  10. 单总体分布卡方拟合优度检验
  11. VS2008显示当前页面的脚本发生错误的处理方法
  12. View inflate 原理
  13. svn 添加忽略后解除被忽略的文件或文件夹
  14. 二代身份证文字照片位置定位mask
  15. [luogu]P1600 天天爱跑步[LCA]
  16. python lisp_给Lisp程序员的Python简介
  17. 在网页调用微信支付,并解决IOS调用提示“缺少参数timeStamp”问题
  18. 2019校招字节跳动、美团、oppo安卓开发新鲜面筋
  19. nice-learning
  20. InForSec@武汉“江夏晴川”网络安全Workshop记录-1

热门文章

  1. QLineEdit 获得焦点后全选文本
  2. cesium 添加纽约城市模型
  3. 语音识别-声纹识别-语音合成【专题二】
  4. video4linux 讲解
  5. 计算两个日期相隔多少年,多少月,多少天
  6. 元柚话TK:海外抖音TikTok如何助力国货品牌出海呢?
  7. Matlab 基本知识(附代码注释详解)
  8. 分布式架构学习之如何将session信息存储到数据库中
  9. android版本5.1下载,android bench5.1版
  10. 判断设备联网状态(Python)