首页 > 其他分享 >2347.最好的扑克手牌

2347.最好的扑克手牌

时间:2023-06-13 16:57:08浏览次数:45  
标签:2347 扑克牌 ranks Kind suits Three 扑克 手牌

问题描述

2347. 最好的扑克手牌 (Easy)

给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小为 ranks[i] ,花色为 suits[i] 。 下述是从好到坏你可能持有的 手牌类型

  1. "Flush":同花,五张相同花色的扑克牌。
  2. "Three of a Kind":三条,有 3 张大小相同的扑克牌。
  3. "Pair":对子,两张大小一样的扑克牌。
  4. "High Card":高牌,五张大小互不相同的扑克牌。 请你返回一个字符串,表示给定的 5 张牌中,你能组成的 最好手牌类型注意: 返回的字符串 大小写 需与题目描述相同。 示例 1:
输入:ranks = [13,2,3,1,9], suits = ["a","a","a","a","a"]
输出:"Flush"
解释:5 张扑克牌的花色相同,所以返回 "Flush" 。

示例 2:

输入:ranks = [4,4,2,4,4], suits = ["d","a","a","b","c"]
输出:"Three of a Kind"
解释:第一、二和四张牌组成三张相同大小的扑克牌,所以得到 "Three of a Kind" 。
注意我们也可以得到 "Pair" ,但是 "Three of a Kind" 是更好的手牌类型。
有其他的 3 张牌也可以组成 "Three of a Kind" 手牌类型。

示例 3:

输入:ranks = [10,10,2,12,9], suits = ["a","b","c","a","d"]
输出:"Pair"
解释:第一和第二张牌大小相同,所以得到 "Pair" 。
我们无法得到 "Flush" 或者 "Three of a Kind" 。

提示:

  • ranks.length == suits.length == 5
  • 1 <= ranks[i] <= 13
  • 'a' <= suits[i] <= 'd'
  • 任意两张扑克牌不会同时有相同的大小和花色。

解题思路

利用两个数组作为哈希表

代码

class Solution {
  public:
    string bestHand(vector<int> &ranks, vector<char> &suits) {
        vector<int> color(4, 0);
        vector<int> number(14, 0);
        for (int i = 0; i < 5; i++) {
            color[suits[i] - 'a']++;
            if (color[suits[i] - 'a'] == 5)
                return "Flush";
            number[ranks[i]]++;
        }
        int maxnum = 0;
        for (int i = 1; i <= 13; i++) {
            maxnum = std::max(maxnum, number[i]);
        }
        if (maxnum >= 3)
            return "Three of a Kind";
        if (maxnum == 2)
            return "Pair";
        return "High Card";
    }
};

标签:2347,扑克牌,ranks,Kind,suits,Three,扑克,手牌
From: https://www.cnblogs.com/zwyyy456/p/17478115.html

相关文章

  • (华为机试)扑克牌大小
    扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):345678910JQKA2jokerJOKER输入两手牌,两手牌之间用"-“连接,每手牌的每张牌以空格分隔,”-"两边没有空格,......
  • 剑指 Offer 61. 扑克牌中的顺子
    题目描述:从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。 限制:数组长度为5 数组的数取值为[0,13].  方法:排序+遍历 classSolutio......
  • 扑克牌的顺子
    classSolution{public:boolisContinuous(vector<int>q){if(q.empty())returnfalse;sort(q.begin(),q.end());intzero=0,n=q.size();for(inti=0;i<n-1;i++){if(q[i]==0)zero......
  • HJ88 扑克牌大小
    题目知识点写着:字符串、链表、队列、栈实际上程序中并没体现链表、队列、栈。当然了如果你认为list是这三,必然是包含了。1'''2测试输入334567-10JQKA4输出510JQKA6'''7l=input().split('-')8l1=l[0].split()9l2=l[1].split()10flag=0......
  • 用 Go 剑指 offer:面试题61. 扑克牌中的顺子
    从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。 示例 1:输入:[1,2,3,4,5]输出:True 示例 2:输入:[0,0,1,2,5]输出:True 限制:数组长度为5 数组的......
  • 跑的快扑克游戏技术方案设计
    用户点击开始游戏,加入到分配的房间,建立消息池MessagePool,心跳包轮训消息池1、48张扑克随机打乱,每人16张分给3人,peopleA、B、C,前端监听发牌消息2、判断黑桃3先出,上一把先......
  • 扑克游戏
    描述有一种别样“小猫钓鱼”扑克游戏。有N张牌,每张牌都有一个花色和点数。游戏的规则:扑克接龙时,若前面有同样花色的牌,你可以将这两张牌连同之间的牌都取走,得到的分值......
  • Java实验-Swing 扑克牌游戏
    实验要求:扑克牌游戏是非常具有趣味性游戏,如下图所示,建立一个窗口界面,用JLable和相关组件(比如适当增加按钮,文本域等,可以自由发挥)实现以下界面,要求:点击任何一张牌,能控制......
  • 2347. 最好的扑克手牌 (Easy)
    问题描述2347.最好的扑克手牌(Easy)给你一个整数数组ranks和一个字符数组suit。你有5张扑克牌,第i张牌大小为ranks[i],花色为suits[i]。下述是从好到坏你可......
  • 力扣简2347 最好的扑克手牌
    暴力求解但是忽略了三条中的2=3=4的情况后面写着写着想了想可以构建一个数组又觉得占内存还是暴力解了publicstaticStringbestHand(int[]ranks,char[]su......