1040(15)

思路:对A进行遍历,然后遍历A前面有a个P,A后面有b个T,那么就有a*b个PAT,这样的A有c个的话,总数就是a*b*c,三个超时,看来需要优化

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
    // write your code here
        Scanner sc=new Scanner(System.in);
        String str=sc.next();
        char[] input=str.toCharArray();
        int i,j,k,l,m1=0,m2=0,m3=0,n;
        int[] c1=new int[100000];
        int[] c2=new int[100000];
        int[] c3=new int[100000];
        for (l=0;l<100000;l++){
            c1[l]=0;
            c2[l]=0;
            c3[l]=0;
        }
        for (i=0;i<input.length;i++){
            if (input[i]=='A'&&i!=0){
                c1[i]++;
                for (j=0;j<i;j++){
                    if (input[j]=='P'){
                        c2[i]++;
                    }
                }
                for (k=i+1;k<input.length;k++){
                    if (input[k]=='T'){
                        c3[i]++;
                    }
                }
            }
        }
        long sum=0;
        for (n=0;n<=input.length;n++){
            sum=sum+c1[n]*c2[n]*c3[n];
        }
        System.out.println(sum%1000000007);
    }
}

 

posted @ 2018-10-23 11:37  博客园机器人  阅读(147)  评论(0编辑  收藏  举报