题解 | #扑克牌大小#
扑克牌大小
https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
#include <bits/stdc++.h>
using namespace std;
//根据输入的字符首字母输出大小等级
int getvalue(string s){
switch(s[0]){
case '3': return 1; //3最小
case '4': return 2;
case '5': return 3;
case '6': return 4;
case '7': return 5;
case '8': return 6;
case '9': return 7;
case '1': return 8; //用1代替10
case 'J': return 9;
case 'Q': return 10;
case 'K': return 11;
case 'A': return 12;
case '2': return 13;
}
return 0;
}
int main(){
string s = "";
while(getline(cin, s)){
string s1 = "", s2 = "";
int second = 0;
for(int i = 0; i < s.size(); i++){
if(s[i] != '-'){
s1 += s[i];
}
else{
second = i + 1;
break;
}
}
//s1 = s.substr(0, s.find('-'));
s2 = s.substr(second);
//cout << s1 << " , " << s2 << endl;
int space1 = 0, space2 = 0;//统计字符串中空格的数量 确定分别有几张牌
for(int i = 0; i < s1.length(); i++)
if(s1[i] == ' ')
space1++;
for(int i = 0; i < s2.length(); i++)
if(s2[i] == ' ')
space2++;
//比较大小
if(s1 == "joker JOKER" || s2 == "joker JOKER") //如果有王炸直接输出王炸
cout << "joker JOKER";
else if(space1 == 3 && space2 == 3){ //都有3个空格,说明4张牌,说明两个都是炸弹
if(getvalue(s1) > getvalue(s2)) //比较炸弹大小
cout << s1 << endl;
else
cout << s2 << endl;
}
else if(space1 == 3){ //字符串其中一个空格为3,说明一个是炸弹,输出炸弹
cout << s1 << endl;
}
else if(space2 == 3){ //字符串其中一个空格为3,说明一个是炸弹,输出炸弹
cout << s2 << endl;
}
else if(space1 == space2){ //没有炸弹的情况下相同类型才能比较
if(s1 == "JOKER" || s2 == "JOKER") cout << "JOKER" << endl; //
else if(s1 == "joker" || s2 == "joker") cout << "joker" << endl; //
else if(getvalue(s1) > getvalue(s2)) //个子、对子、三个、顺子都是比较第一个大小 //
cout << s1 << endl;
else
cout << s2 << endl;
}
else //无法比较
cout << "ERROR" << endl;
}
return 0;
}
华为题库题解 文章被收录于专栏
牛客华为题库的题解
