字符串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 Main{
public static void main(String [] args){
Scanner in = new Scanner(System.in);
String s = in.nextLine();
char[] chs = s.toCharArray();
long p = 0, pa = 0, pat = 0;
for(int i = 0; i < chs.length; i++){
if(chs[i] == 'P')
p++;
else if(chs[i] == 'A')
pa+=p;
else if(chs[i] =='T')
pat+=pa;
}
System.out.println(pat%1000000007);
}
}
脑子秀逗了。。。
我脑子怎么就想不出来这样的答案呢???
附上运行时间过长的答案:
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner in = new Scanner(System.in);
String str = in.nextLine();
int count = 0;
for(int i = 0; i < str.length(); i++){
if(Character.valueOf(str.charAt(i)) == 'P'){
for(int j = i+1; j < str.length(); j++){
if(Character.valueOf(str.charAt(j)) == 'A'){
for(int k = j+1; k < str.length(); k++){
if(Character.valueOf(str.charAt(k)) == 'T'){
count++;
}
}
}
}
}
}
System.out.println(count);
}
}