Java 1040 有几个PAT
题目内容:
字符串 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.直接暴力会出现超时,本题最后两个测试点的用例应该很大,故本题的时间复杂度需要保持在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相关推荐
- Pat乙级 1040 有几个PAT
Pat乙级1040 有几个PAT 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/9948052823899 ...
- PAT (Basic Level) Practise 1040 有几个PAT(DP)
1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...
- C++学习之路 | PTA乙级—— 1040 有几个PAT (25 分)(精简)
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...
- 1040 有几个PAT (25 分)
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...
- 1040 有几个PAT (25 分) -- 测试点3 测试点4
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 ...
- PAT 乙级 1040 有几个PAT (25分)
1040 有几个PAT (25分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位( ...
- 1040 有几个PAT (25 分)
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...
- PAT-B 1040. 有几个PAT(25)
1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...
- 【PAT】乙级 1040 有几个PAT (25 分) c++
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...
最新文章
- Fibonacci数列Linux程序,Linux shell实现斐波那契数列编程
- 移动互联网时代的信息安全与防护_移动互联网时代,草根创业还有哪些机会?...
- CodeForces - 801C Voltage Keepsake(二分)
- 怎么修改ppt的虚线间隔_还有一小时下班,领导交给我一份ppt,做不完不许走!...
- vim 删除一行_Vim 日常命令
- 信创产业已成现象级新风口 代码“源头”安全该如何守护?
- 计算机libeay32.dll丢失怎么办,电脑libeay32.dll丢失的解决方法
- Active Directory攻防实验室环境搭建教程(一)
- html修改img图片颜色,html中img图片设置透明度的方法
- 单总体分布卡方拟合优度检验
- VS2008显示当前页面的脚本发生错误的处理方法
- View inflate 原理
- svn 添加忽略后解除被忽略的文件或文件夹
- 二代身份证文字照片位置定位mask
- [luogu]P1600 天天爱跑步[LCA]
- python lisp_给Lisp程序员的Python简介
- 在网页调用微信支付,并解决IOS调用提示“缺少参数timeStamp”问题
- 2019校招字节跳动、美团、oppo安卓开发新鲜面筋
- nice-learning
- InForSec@武汉“江夏晴川”网络安全Workshop记录-1