直接找A,每个A前的P和后的T个数乘积,再加和,就是输出的数了

//意料之中的超时了三个测试点
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {//输入BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String str = bf.readLine();long sum = 0;//记录PAT的个数for (int i = 0; i < str.length() - 1; i++) {//遍历整个字符串if (str.charAt(i) == 'A') {//找到A的所有下标sum += P(str, i) * T(str, i);//用每个A的PAT组合加和}continue;}System.out.println(sum % 1000000007);//由于结果可能比较大,只输出对 1000000007 取余数的结果}public static long P(String str, int a) {//计算下标a之前“P”的个数long P = 0;//记录P的个数for (int i = 0; i < a; i++) {if (str.charAt(i) == 'P') {P++;}continue;}return P;}public static long T(String str, int a) {//计算下标a之后“T”的个数long T = 0;//记录T的个数for (int i = str.length() - 1; i > a; i--) {if (str.charAt(i) == 'T') {T++;}continue;}return T;}}

继续修改:

//25分
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {//输入BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String str = bf.readLine();int num_P = 0, num_T = 0;long sum = 0;//记录PAT的个数int a[] = new int[str.length()];for (int i = 0; i < str.length(); i++) {if (str.charAt(i) == 'P') {num_P++;} else if (str.charAt(i) == 'A') {a[i] = num_P;// 将当前A前面的P的个数保存}}for (int i = str.length() - 1; i >= 0; i--) {// 统计每个A后面T的个数if (str.charAt(i) == 'T') {num_T++;} else if (str.charAt(i) == 'A') {sum += a[i] * num_T;// 当前A前面的P的个数×当前A后面的T的个数}}System.out.println(sum % 1000000007);//由于结果可能比较大,只输出对 1000000007 取余数的结果}
}

相同思想-不同写法:

import java.io.BufferedReader;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception{BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));char[] c = bf.readLine().toCharArray();bf.close();int pat=0,at=0,t=0;for(int i=c.length-1;i>=0;i--) {if(c[i]=='T')t++;else if(c[i]=='A')at=(t+at)%1000000007;else pat=(pat+at)%1000000007;}System.out.print(pat);}
}

PAT_B_1040_Java(25分)相关推荐

  1. 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一 ...

  2. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

    7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  3. PTA 03-树1 树的同构 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构   (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...

  4. 【PAT (Advanced Level) Practice】1051 Pop Sequence (25 分)

    1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the order ...

  5. 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)

    1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...

  6. 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)

    1149 Dangerous Goods Packaging (25 分) When shipping goods with containers, we have to be careful not ...

  7. 7-29 修理牧场 (25 分)

    7-29 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L ​i ​​ 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...

  8. 7-18 银行业务队列简单模拟 (25 分)

    7-18 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...

  9. 5-35 城市间紧急救援 (25分) pat 数据结构

    题目连接 https://pta.patest.cn/pta/test/15/exam/4/question/862 5-35 城市间紧急救援   (25分) 作为一个城市的应急救援队伍的负责人,你有 ...

最新文章

  1. HTTPS 也不安全?被发现新漏洞会暴露你的数据
  2. php base64处理
  3. SPOJ MULTQ3 7299 Multiples of 3 (区间更新)
  4. java程序在eclipse上运行和导出文件运行结果不同
  5. Windows server 2008文件服务器之二屏蔽影音文件以及指定文件名
  6. 这都2021年了,还不会Feign性能调优?Feign性能调优之gzip压缩实现-自娱自乐篇
  7. Python入门,从19个语法开始!
  8. latex中\left[\right]在多行公式中的问题
  9. eclipse怎么修改java的行高_eclipse皮肤怎么修改 eclipse皮肤修改教程
  10. jQuery数据与Attr?
  11. java netbeans教程_Netbeans下载安装教程教程
  12. 01,HelloWorld入门程序
  13. 手把手教你集成阿里云推送(app杀死仍可推送)
  14. 如何使用计算机求和公式,excel求和公式怎么用
  15. 彤云缥缈回金格,明月婵娟挂玉钩
  16. Edge浏览器或使用谷歌chrome内核的浏览器访问网页版高德地图很卡特别慢解决办法
  17. 风控模型基本概念和方法
  18. 量化投资学习——股票分红对期指的影响
  19. 计算机网络教程网线制作,图吧小白教程 篇二十六:手把手教你自制网线(夹网线水晶头)...
  20. 分类算法-决策树、随机森林

热门文章

  1. java实现分布式redis锁_使用redis实现分布式锁
  2. 项目接入实现复杂布局的vlayout
  3. 游戏服务器出现问题怎么维护权益,游戏服务器出问题怎么解决
  4. 软件测试python基础_软件测试学习教程——python基础
  5. python保存运行结果下次使用_将python运行结果保存至本地文件中的示例讲解
  6. android 自定义loading,android_自定义Loading框
  7. iphone中怎么强制view重绘
  8. 实现call和apply
  9. git拉取分支报错:fatal:‘XXX' is not a commit and a branch ‘XXX' cannot be created from
  10. 360获公安部“优秀技术支持单位”等七项荣誉