题解 | #扑克牌大小#

对于扑克牌大小这道题目,如果知道map映射的思想,做起来就会很简单,我们可以先把每张扑克牌上的内容,从字符串按照大小映射为相应数字,这样之后的比较就会变得很简单
  1. 我们先根据“-”的位置,将两副牌分别放入两个字符串,
  2. 接下来就可以根据空格的个数,判断两副牌是否为同类型,需要注意,炸弹和对王
  • 如果空格个数不同,对炸弹和对王分别判断,不属于这两种类型就可以直接输出ERROR ,这里在判断炸弹和对王的时候,我们可以直接根据字符串长度去判断,更为简单
  • 如果空格个数相同,那说明是同类型,那我们就可以直接根据两副牌中第一张扑克比较大小,这里就需要用到我们的map映射了,先分别分离出两副牌中的第一张扑克的内容,直接利用map比较输出即可  
#include<iostream>
#include<map>
#include<string>
using namespace std;

map<string,int> mp={{"3",3},{"4",4},{"5",5},{"6",6},{"7",7},{"7",7},{"8",8},{"9",9},{"10",10},{"J",11},{"Q",12},{"K",13},{"A",14},{"2",15},{"joker",16},{"JOKER",17}};

int judge_space(string a)
{
    int cnt=0;
    for(int i=0;i<a.size();i++)
    {
        if(a[i]==' ')
        {
            cnt++;
        }
    }
    return cnt;
}

int main()
{
    string str,stra,strb;
    getline(cin,str);
    int pos=str.find("-");
    int len=str.size();
    stra=str.substr(0,pos);
    strb=str.substr(pos+1,len-pos-1);
    int spacea=judge_space(stra);
    int spaceb=judge_space(strb);
    if(spacea!=spaceb)
    {
        if(pos==11)
        {
            cout<<stra<<endl;
        }
        else if(len-pos-1==11)
        {
            cout<<strb<<endl;
        }
        else if(pos==7)
        {
            cout<<stra<<endl;
        }
        else if(len-pos-1==7)
        {
            cout<<strb<<endl;
        }
        else
        {
            cout<<"ERROR"<<endl;
        }
    }
    else
    {
        if(spacea==0)
        {
            if(mp[stra]>mp[strb])
            {
                cout<<stra<<endl;
            }
            else
            {
                cout<<strb<<endl;
            }
        }
        else
        {
            int posa=stra.find(' ');
            int posb=strb.find(' ');
            string aa=stra.substr(0,posa);
            string bb=strb.substr(0,posb);
            if(mp[aa]>mp[bb])
            {
                cout<<stra<<endl;
            }
            else
            {
                cout<<strb<<endl;
            }
        }
    }
    return 0;
}

全部评论

相关推荐

03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务