生活随笔
收集整理的这篇文章主要介绍了
PAT有几个pat
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位§,第4位(A),第6位(T);第二个PAT是第3位§,第4位(A),第6位(T)。
现给定字符串,问一共可以形成多少个PAT?
输入描述:
输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。
输出描述:
在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
输入例子:
APPAPT
输出例子:
2
刚开始想用动态规划,但是使用起来却复杂了,看了推荐答案后,自愧不如。核心求pat的组成方式是叠加的,所以每遇到T的时候,pat都要增加一次,然而增加的次数却是pa的组成总次数。
然而每次遇到a。pa的组合总次数就要加一次。增加的次数为到当前位置P的总次数。很巧妙的动态规划。代码如下:(仅限牛客ac)
import java
.util
.Scanner
;public class pat30 {public static void main(String
[] args
) {Scanner sc
=new Scanner(System
.in
);String str
=sc
.next();char c
[]=str
.toCharArray();long p
=0,pa
=0,pat
=0;for(int i
=0;i
<c
.length
;i
++){if(c
[i
]=='P') {p
++;}else if(c
[i
]=='A') {pa
+=p
;}else {pat
+=pa
%1000000007;}}System
.out
.println(pat
%1000000007);
}
}
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读
总结
以上是生活随笔为你收集整理的PAT有几个pat的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。