题解 | #扑克牌大小#

扑克牌大小

https://www.nowcoder.com/practice/0a92c75f5d6b4db28fcfa3e65e5c9b3f

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

string FindMax(const string& line)
{
    // 如果存在王炸直接返回王炸
    if (line.find("joker JOKER") != string::npos)
        return "joker JOKER";
    // 分割两手牌
    string poker1 = line.substr(0, line.find('-'));
    string poker2 = line.substr(line.find('-') + 1);
    // 计算两手牌的牌数
    int poker1_cnt = count(poker1.begin(), poker1.end(), ' ') + 1;
    int poker2_cnt = count(poker2.begin(), poker2.end(), ' ') + 1;
    // 获取两手牌各自的第一张牌
    string poker1_first = poker1.substr(0, poker1.find(' '));
    string poker2_first = poker2.substr(0, poker2.find(' '));
    // 按照斗地主规则比较牌的大小
    if (poker1_cnt == poker2_cnt)
    {
        // 只需要比较谁的下标比较大即可
        string str = "345678910JQKA2jokerJOKER";
        if (str.find(poker1_first) > str.find(poker2_first))
            return poker1;
        else
            return poker2;
    }
    // 不满足牌数一样的,判断是否存在炸,是炸的大
    if (poker1_cnt == 4)
        return poker1;
    else if (poker2_cnt == 4)
        return poker2;
    // 不满足牌数一样,还不存在炸的,不能比较
    return "ERROR";
}

int main()
{
    string line;
    while (getline(cin, line))
    {
        cout << FindMax(line) << endl;
    }
    return 0;
}

全部评论

相关推荐

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