Best Poker Hand
EasyArrayHash TableCounting
Solution
export function bestHand(ranks: number[], suits: string[]): string {
if (suits.every((suit) => suit === suits[0])) {
return 'Flush';
}
let maxRankCount = 0;
const rankCounts = new Map<number, number>();
ranks.forEach((rank) => {
const rankCount = rankCounts.get(rank) ?? 0;
rankCounts.set(rank, rankCount + 1);
maxRankCount = Math.max(maxRankCount, rankCount + 1);
});
if (2 <= maxRankCount) {
return 3 <= maxRankCount ? 'Three of a Kind' : 'Pair';
}
return 'High Card';
}