Largest Time for Given Digits LeetCode solution in Java

1
class Solution {
2
public String largestTimeFromDigits(int[] arr) {
3
int[] count = new int[10];
4
for (int num : arr) {
5
count[num]++;
6
}
7
StringBuilder sb = backTrack(count, new StringBuilder());
8
if (sb.length() == 4) sb.insert(2, ':');
9
return sb.toString();
10
}
11

12
private StringBuilder backTrack(int[] count, StringBuilder sb) {
13
int size = sb.length();
14
int start = 0;
15
if (size == 0) {
16
start = 2;
17
}
18
if (size == 1) {
19
start = sb.charAt(0) == '2' ? 3 : 9;
20
}
21
if (size == 2) {
22
start = 5;
23
}
24
if (size == 3) {
25
start = 9;
26
}
27
for (int i = start; i >= 0; i--) {
28
if (count[i] == 0) continue;
29
count[i]--;
30
sb.append(i);
31
backTrack(count, sb);
32
if (sb.length() == 4) {
33
return sb;
34
} else {
35
count[Character.getNumericValue(sb.charAt(sb.length() - 1))]++;
36
sb.deleteCharAt(sb.length() - 1);
37
}
38
}
39
return sb;
40
}
41
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0