1、哈希表
我们可以利用哈希表来统计每个花色和数字出现的次数,最后根据出现的次数返回相同的值。为了减少空间复杂度,我们可以使用数组来代替哈希表,考虑到花色一共只有4种、数组一共只有13种,我们只需要通过改变数组的大小即可实现哈希表的功能。
class Solution {
public:
string bestHand(vector<int> &ranks, vector<char> &suits) {
vector<int> nums(4);
for (int i = 0; i < ranks.size(); ++i) {
++nums[suits[i] - 'a'];
}
for (int i: nums) {
if (i == 5) {
return "Flush";
}
}
nums.clear();
nums.resize(13);
for (int i = 0; i < ranks.size(); ++i) {
++nums[ranks[i] - 1];
}
int max_num = 0;
for (int i: nums) {
max_num = max(max_num, i);
}
if (max_num >= 3) {
return "Three of a Kind";
} else if (max_num == 2) {
return "Pair";
} else {
return "High Card";
}
}
};