forked from anishLearnsToCode/leetcode-algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
RingsAndRods.java
32 lines (29 loc) · 840 Bytes
/
RingsAndRods.java
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
29
30
31
32
// https://leetcode.com/problems/rings-and-rods
// T: O(|rings|)
// S: O(1)
public class RingsAndRods {
public int countPoints(String rings) {
final boolean[][] rods = new boolean[10][3];
for (int i = 0 ; i < rings.length() ; i += 2) {
rods[rings.charAt(i + 1) - '0'][toColorIndex(rings.charAt(i))] = true;
}
int points = 0;
for (boolean[] rod : rods) {
if (containsAllColors(rod)) {
points++;
}
}
return points;
}
private int toColorIndex(char color) {
return switch (color) {
case 'R' -> 0;
case 'G' -> 1;
case 'B' -> 2;
default -> -1;
};
}
private boolean containsAllColors(boolean[] rod) {
return rod[0] && rod[1] && rod[2];
}
}