「每日LeetCode」2023年2月20日

本文最后更新于:2023年3月19日 晚上

2347.最好的扑克手牌

2347.最好的扑克手牌

Category Difficulty Likes Dislikes
algorithms Easy (54.60%) 6 -

Tags
Companies
给你一个整数数组 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’
  • 任意两张扑克牌不会同时有相同的大小和花色。

Discussion | Solution

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
* @lc app=leetcode.cn id=2347 lang=javascript
*
* [2347] 最好的扑克手牌
*/

// @lc code=start
/**
* @param {number[]} ranks
* @param {character[]} suits
* @return {string}
*/
var bestHand = function (ranks, suits) {
if (new Set(suits).size === 1) return "Flush";
const rankMap = {};
let pairFlag = false;
for (let i = 0; i < ranks.length; i++) {
const rank = ranks[i];
if (rankMap[rank]) rankMap[rank]++;
else rankMap[rank] = 1;
if (rankMap[rank] === 3) return "Three of a Kind";
else if (rankMap[rank] === 2) {
pairFlag = true;
}
}
return pairFlag ? "Pair" : "High Card";
};
// @lc code=end