今天这个题目要注意顺子以345678910JQKA为顺序,也就是不能出现2、M和N。同时给你的字符串不一定是按照顺子的顺序给的,因此将字符串转换为数字后要拍一个序。
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define ll __int64
char s[20];
int ret[20];
int cmp(const void* _a , const void* _b)//参数格式固定
{
int* a = (int*)_a;//强制类型转换
int* b = (int*)_b;
return *a -*b;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s",s);
int s1=strlen(s);
int flag=1;
for(int i=0;i<s1;i++){
if(s[i]>='3'&&s[i]<='9') ret[i]=s[i]-'0';
else if(s[i]=='0') ret[i]=10;
else if(s[i]=='J') ret[i]=11;
else if(s[i]=='Q') ret[i]=12;
else if(s[i]=='K') ret[i]=13;
else if(s[i]=='A') ret[i]=14;
else flag=0;
}
if(flag){
qsort(ret,s1,sizeof(ret[0]),cmp);//参数依此的意义为:数组、排序的数组大小、每个元素的大小、比较的方式(升序还是降序)
for(int i=0;i<s1-1;i++){
if(ret[i]+1!=ret[i+1]) flag=0;
}
}
if(flag&&s1>=5) printf("YES\n");
else printf("NO\n");
}
return 0;
}