PAT乙级(Basic)题库---1003
来源:互联网 发布:怎么查看端口是否打开 编辑:程序博客网 时间:2024/05/19 10:37
题目
1003-我要通过
解题思路
这道题主要是读懂题意,根据第一第二两个条件可得字符串如果中间为“PAT”,则字符串关于“PAT”对称,再由第三个条件可得初始情况为中间字符串为“PAT”,a=c为空字符串,或者是仅由字母 A 组成的字符串,即aPATa,推导一次得aPAATaa,中间每多一个字符‘A‘后面多一个字符串a。推导可得字符‘P’前的字符‘A’个数与字符‘P’和‘T’间的字符‘A’个数相乘等于字符‘T’后的字符‘A’个数。即
正确情况=A(x)PA(y)TA(z) x,y,z表示字母A的个数,x*y=z,其中y>=1。
代码
这里使用两种方法实现,一种直接通过循环查询字符串,一种通过字符串的find方法实现。
循环
#include<iostream>#include<cstring>#include<string.h>using namespace std;int main(){ //p记录字符‘P’位置,t记录字符‘T’位置,flag记录答案正确与否 int n,p,t,flag; string a; cin>>n; while(n--) { cin>>a; flag=1; p=-1; t=-1; for(int i=0;i<a.length();i++) { if(a[i]=='P') { //第一次找到字符‘P’ if(p==-1) { p=i; } //多次找到字符‘P’,答案错误 else { flag=0; break; } } else if(a[i]=='T') { //第一次找到字符‘T’ if(t==-1) { t=i; } //多次找到字符‘T’,答案错误 else { flag=0; break; } } //字符不是‘P’,‘A’,‘T’中任何一个,答案错误 else if(a[i]!='A') { flag=0; break; } } /*答案错误情况 1.字符‘P’,‘T’间无字符‘A’或字符‘T’在字符‘P’前面 2.三段‘A’字符串个数不符合条件 */ if((t-p)<2||p*(t-p-1)!=a.length()-t-1) { flag=0; } if(flag) { cout<<"YES\n"; } else { cout<<"NO\n"; } }}
字符串find
#include<iostream>#include<cstring>#include<string.h>using namespace std;int main(){ //p记录字符‘P’位置,t记录字符‘T’位置 int n,p,t; string a; cin>>n; while(n--) { cin>>a; //找到第一个非‘A’字符,找不到或不为‘P’则答案错误 p=a.find_first_not_of('A'); if(p==string::npos||a[p]!='P') { cout<<"NO\n"; } else { /*找到‘P’字符后第一个非‘A’字符,答案错误情况 1.找不到。 2.不为‘T’。 3.‘P’和‘T’间无字符‘A’。 4.三段‘A’字符串个数不符合条件*/ t=a.find_first_not_of('A',p+1); if(t==string::npos||a[t]!='T'||t-p<2||p*(t-p-1)!=a.length()-t-1) { cout<<"NO\n"; } else { cout<<"YES\n"; } } }}
阅读全文
0 0
- PAT乙级(Basic)题库---1003
- PAT乙级(Basic)题库---1001
- PAT乙级(Basic)题库---1002
- PAT乙级(Basic)题库---1004
- PAT乙级(Basic)题库---1005
- PAT乙级(Basic)题库---1006
- PAT乙级(Basic)题库---1007
- PAT乙级(Basic)题库---1008
- PAT乙级(Basic)题库---1009
- PAT乙级(Basic Level)真题1003
- PAT乙级(Basic Level)1009(Java)
- PAT乙级(Basic Level)1021(Java)
- PAT乙级(Basic Level)1046(Java)
- PAT乙级(Basic Level)1042(Java)
- PAT乙级(Basic Level)1001(Java)
- PAT乙级(Basic Leve)1043(C++)
- PAT乙级(Basic Level)1041(C++)
- PAT乙级(Basic Level)1047(C++)
- 再谈机器学习中的归一化方法(Normalization Method)
- Kaggel实战:识别手写体[knn改进算法]
- 设计模式--模板方式模式
- R中的数据结构(Array,Factor,List,DataFrame)
- 用soaplib 创建 WebService
- PAT乙级(Basic)题库---1003
- 欢迎使用CSDN-markdown编辑器
- linux下文件权限管理介绍
- 跳表分析与实现
- bzoj1912: [Apio2010]patrol 巡逻
- 从入门到入门-Spring Boot-属性配置
- OSG数学基础:坐标系变换
- 南京研究所第三届Hackathon(编程马拉松)之旅
- ubuntu chmod 和 chown 命令用法