PAT乙级 1003. 我要通过!(20) - 张乐乐章 - 博客园 https://www.cnblogs.com/zle1992/p/5893564.html
以上的主要内容,补充的主要是,AC代码
用指针,完成字符计数,通过作差取得,而非使用计数器。另外,满足复杂条件的YES,else取NO
flag 0 1 2也巧妙
/*
Name:
Copyright:
Author:
Date: 18/01/19 21:18
Description: 这里面指针的妙用,让我又是一开眼界,可以这样处理字符串的字符个数计数,我还用计数器,傻乎乎的。
*/
#include<stdio.h>
#include<string.h>
int main(){
int n,i,j;
int cntp=0,cntt=0,cnta=0,flag=1;
char s[101];
char *p1,*p2;
scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%s",&s);
cntp=0,cntt=0,cnta=0,flag=1;
for(j=0;s[j]!=' ';j++)
{
if(s[j]=='P') cntp++;
else if(s[j]=='A') cnta++;
else if(s[j]=='T') cntt++;
else {flag=2; break;}
}
if(flag==1&&cntp==1&&cntt==1&&cnta!=0)
{
p1=strchr(s,'P');
p2=strchr(s,'T');
if((p1-s)*(p2-p1-1)==strlen(p2)-1)
flag=0;
}
if(flag==0) printf("YES
");
else printf("NO
");
}
return 0;
}