欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PAT 乙级 1040 有几个PAT (25分)

程序员文章站 2022-06-08 08:08:44
...

PAT 乙级 1040 有几个PAT

题目
PAT 乙级 1040 有几个PAT (25分)
输入样例:

APPAPT

输出样例:

2

原题链接

题外话
借鉴的CSDN某大佬的代码,真的感觉这个方法超级棒,我自己刚开始一上来先搞了好几层循环,测试点一个一个的都运行超时,后来又换了种思路,想用类似于在线处理的方法,结果写了几十行代码越写越乱,关键是测试点还都运行错误。。。枯了~~
这个代码先把‘T’的个数算出来,在进行for循环,遇到T,就相应的减一,代码超简洁而且复杂度为O(n),太厉害了!!

源码:

#include<stdio.h>
#include<string.h>
int main()
{
	char str[100100];
	long long  count_p = 0,count_a = 0, count_t = 0;
	scanf("%s", str);
	for (int i = 0; i < strlen(str); i++) {
		if (str[i] == 'T')count_t++;
	}
	for (int i = 0; i < strlen(str); i++) {
		if (str[i] == 'P')count_p++;
		if (str[i] == 'T')count_t--;
		if (str[i] == 'A')count_a = count_a+count_p * count_t;
	}
	printf("%d", count_a % 1000000007);
	return 0;
}

相关标签: PAT 乙级题库