给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小为 ranks[i] ,花色为 suits[i] 。
下述是从好到坏你可能持有的 手牌类型 :
"Flush":同花,五张相同花色的扑克牌。
"Three of a Kind":三条,有 3 张大小相同的扑克牌。
"Pair":对子,两张大小一样的扑克牌。
"High Card":高牌,五张大小互不相同的扑克牌。
请你返回一个字符串,表示给定的 5 张牌中,你能组成的 最好手牌类型 。
注意:返回的字符串 大小写 需与题目描述相同。
class Solution {
public:
string bestHand(vector<int>& ranks, vector<char>& suits) {
// 同花
sort(suits.begin(), suits.end());
if (suits[0] == suits[4]) {
return "Flush";
}
// 其他
sort(ranks.begin(), ranks.end());
int same = 1;
int maxSame = 1; // 最大相同数目
for (int i = 1; i <= 4; ++i) {
if (ranks[i] == ranks[i - 1]) {
same++;
}
else {
maxSame = max(same, maxSame);
same = 1;//重置
}
}
maxSame = max(same, maxSame);
return maxSame >= 3 ? "Three of a Kind" : maxSame == 2 ? "Pair" : "High Card";
}
};
重点:sort()排序