题目描述
字符串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
代码如下:
import java.util.*;
public class PAT1030 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String s = in.next();
int len = s.length();
//int count=0;
int p=0,pa=0,pat=0;
for(int i = 0;i<len;i++){
char tmp = s.charAt(i);
if(tmp=='P'){
p++;
}else if(tmp=='A'){
pa = pa+p;
pa = pa%1000000007;
}else{
pat = pa +pat;
pat = pat%1000000007;
}
}
System.out.println(pat);
}
}
说明 暴力搜索会使得时间超出限制。故只能使用动态规划
参考牛客网一位用户