题解 | #扑克牌大小#

扑克牌大小

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;
}

华为题库题解 文章被收录于专栏

牛客华为题库的题解

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务