PAT乙级题:1003我要通过!

博客给出了PAT乙级题1003的解题代码。该题要求判断字符串是否符合特定规则,即必须有PAT且无其他字符,P与T中间A的个数乘以P之前的个数等于T之后的A的个数。代码通过输入字符串,进行条件判断并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <algorithm>
 5 using namespace std;
 6 //题目贼恶心,竟然没有说出A存在的规律!!!!!
 7 //首先,必须要有PAT存在,且不能有其他字符
 8 //其次P与T中间A的个数乘以P之前的个数==T之后的A的个数!!!!!!!!!
 9 int main() {
10     int n;
11     cin >> n;
12     vector<string> v(n, "YES");
13     for (int i = 0; i < n; ++i) {
14         string s;
15         cin >> s;
16         int p = s.find('P');
17         int t = s.find('T');
18         int a = count(s.begin(), s.end(), 'A');//统计A的字符
19         if (p == -1 || t == -1 || (t - 1) <= p || a != (s.size() - 2)) {
20             //P或T或T不在P后面或存在其他字母则输出false
21             v[i] = "NO";
22             continue;
23         }
24         else if (p*(t - p - 1) != (s.size() - 1 - t)) {
25             v[i] = "NO";
26             continue;
27         }
28     }
29     for (int i = 0; i < n; ++i) {
30         cout << v[i] << endl;
31     }
32 
33     return 0;
34 }

 

转载于:https://www.cnblogs.com/zzw1024/p/10556092.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值