C++知识回顾:
#include<iostream>
using namespace std;
//转义字符
int main()
{
//换行\n
cout<<"hello world";
//反斜杠 两个反斜杠输出一个反斜杠
cout<<"\\"<<endl;
//水平制表符 \t 作用:可以整齐的输出数据
cout<<"aaaaaa\tbbb"<<endl;//添加endl尾末空格
cout<<"aa\tbbb"<<endl;
cout<<"aa\tbbb"<<endl;
}
#include<iostream>
#include<string>//用C++字符串包含这个头文件
using namespace std;
int main()
{//C风格字符串 char 字符串名[]
char str[]="hello world";
cout<<str<<endl;
//C++风格的字符串
string str2="hello world";//string数据类型
cout<<str2<<endl;
//布尔类型bool
//true 真 (本质是1)false 假(本质是0)
//创建布尔数据类型
bool flag = true;
cout<<flag<<endl;
flag=false;//false代表假
cout<<flag<<endl;
//查看bool类型所占内存的空间 bool布尔类型占1个字符
cout<<"查看bool类型所占的空间:"<<sizeof(bool)<<endl;
}
题目:
只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
1.字符中必须包含仅有PAT这三种字符,不可以包含其他字符;
2.任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串;
3.如果aPbTc是正确的,那么aPbATca也是正确的,其中a,b,c均或者是空字符串,或者仅由字母A组成的字符串。
代码实现:
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n,p=0,t=0;
string s;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>s;
map<char,int>m;
for(int j=0;j<s.size();j++)
{
m[s[j]]++;
if(s[j]=='p')p=j;
if(s[j]=='T')t=j;
}
if(m['P']==1&&m['A']!=0&&m['T']==1&&m.size()==3&&t-p!=1&&p*(t-p-1)==s.length()-t-1)
cout<<"YES\n";
else
cout<<"NO\n";
}
return 0;
}