Skip to content

Commit bd38977

Browse files
solves #2347: Best Poker Hand in jav a
1 parent 5a7ad7f commit bd38977

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,7 @@
752752
| 2335 | [Minimum Amount of Time to Fill Cups](https://leetcode.com/problems/minimum-amount-of-time-to-fill-cups) | [![Java](assets/java.png)](src/MinimumAmountOfTimeToFillCups.java) | |
753753
| 2439 | [Minimize Maximum of Array](https://leetcode.com/problems/minimize-maximum-of-array) | [![Python](assets/python.png)](python/minimize_maximum_of_array.py) | |
754754
| 2341 | [Maximum Number of Pairs in Array](https://leetcode.com/problems/maximum-number-of-pairs-in-array) | [![Java](assets/java.png)](src/MaximumNumberOfPairsInArray.java) | |
755-
| 2347 | [Best Poker Hand](https://leetcode.com/problems/best-poker-hand) | | |
755+
| 2347 | [Best Poker Hand](https://leetcode.com/problems/best-poker-hand) | [![Java](assets/java.png)](src/BestPokerHand.java) | |
756756
| 2348 | [Number of Zero-Filled Subarrays](https://leetcode.com/problems/number-of-zero-filled-subarrays) | [![Python](assets/python.png)](python/number_of_zero_filled_subarrays.py) | |
757757
| 2351 | [First Letter to Appear Twice](https://leetcode.com/problems/first-letter-to-appear-twice) | | |
758758
| 2357 | [Make Array Zero by Subtracting Equal Amounts](https://leetcode.com/problems/make-array-zero-by-subtracting-equal-amounts) | | |

src/BestPokerHand.java

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// https://leetcode.com/problems/best-poker-hand
2+
// T: O(1)
3+
// S: O(1)
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public class BestPokerHand {
9+
public String bestHand(int[] ranks, char[] suits) {
10+
if (sameSuit(suits)) {
11+
return "Flush";
12+
}
13+
14+
final Map<Integer, Integer> frequencies = getFrequencies(ranks);
15+
final int maxFrequency = frequencies.values().stream().max(Integer::compare).get();
16+
17+
if (maxFrequency >= 3) {
18+
return "Three of a Kind";
19+
}
20+
if (maxFrequency == 2) {
21+
return "Pair";
22+
}
23+
24+
return "High Card";
25+
}
26+
27+
private Map<Integer, Integer> getFrequencies(int[] ranks) {
28+
final Map<Integer, Integer> frequencies = new HashMap<>();
29+
for (int rank : ranks) {
30+
frequencies.put(rank, frequencies.getOrDefault(rank, 0) + 1);
31+
}
32+
return frequencies;
33+
}
34+
35+
private boolean sameSuit(char[] suits) {
36+
char first = suits[0];
37+
for (char suit : suits) {
38+
if (suit != first) return false;
39+
}
40+
return true;
41+
}
42+
}

0 commit comments

Comments
 (0)