--------------------------------------------------------------------------------------------------------------------------------------------------------
时间限制:1秒 空间限制:32768K 代码长度限制 100 KB
--------------------------------------------------------------------------------------------------------------------------------------------------------
题目描述
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?
输入描述:
每个输入只有一行,包含一个字符串,长度不超过10的5次方,只包含P、A、T三种字母。
输出描述:
在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
APPAPT
输出例子:
2
-------------------------------------------------------------------------------------------------------------------------------------------------------
实现思路:
(1).将输入字符串均转换为字符数组cArr;
(2).定义字符串“P”、“PA”及“PAT”出现的数量pCount、paCount、patCount,循环字符数组,找到的字符如果为“P”,变量pCount自增,如果为“A”,paCount数量增加pCount,如果都不是,patCount的数量增加paCount;
(3).对patCount取余,否则会溢出,循环结束,打印出patCount即可。
--------------------------------------------------------------------------------------------------------------------------------------------------------
package com.biyao.algorithm.niuke.a1;
import java.util.Scanner;
public class Main_a1_030 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String s1 = scan.next();
char[] cArr = s1.toCharArray();
int pCount = 0;
int paCount = 0;
int patCount = 0;
for (int i = 0; i < cArr.length; i++) {
if(cArr[i] == 'P'){
pCount++;
}else if(cArr[i] == 'A'){
paCount = paCount + pCount;
}else{
patCount = patCount + paCount;
patCount = patCount%1000000007;
}
}
System.out.println(patCount);
}
}
}