PAT 有几个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
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);
	}
}

 

你可能感兴趣的:(Practice)