Integer to English Words LeetCode solution in Java

1
class Solution {
2

3
private static final int[] INT_NUMBERS = {
4
1_000_000_000,
5
1_000_000,
6
1000,
7
100,
8
90,
9
80,
10
70,
11
60,
12
50,
13
40,
14
30,
15
20,
16
19,
17
18,
18
17,
19
16,
20
15,
21
14,
22
13,
23
12,
24
11,
25
10,
26
9,
27
8,
28
7,
29
6,
30
5,
31
4,
32
3,
33
2,
34
1
35
};
36
private static final String[] STRING_NUMBERS = {
37
"Billion",
38
"Million",
39
"Thousand",
40
"Hundred",
41
"Ninety",
42
"Eighty",
43
"Seventy",
44
"Sixty",
45
"Fifty",
46
"Forty",
47
"Thirty",
48
"Twenty",
49
"Nineteen",
50
"Eighteen",
51
"Seventeen",
52
"Sixteen",
53
"Fifteen",
54
"Fourteen",
55
"Thirteen",
56
"Twelve",
57
"Eleven",
58
"Ten",
59
"Nine",
60
"Eight",
61
"Seven",
62
"Six",
63
"Five",
64
"Four",
65
"Three",
66
"Two",
67
"One"
68
};
69

70
public String numberToWords(int num) {
71
if (num == 0) return "Zero";
72
return numberToWordsHelper(num).toString();
73
}
74

75
private StringBuilder numberToWordsHelper(int num) {
76
StringBuilder sb = new StringBuilder();
77
if (num == 0) return sb;
78
for (int i = 0; i < INT_NUMBERS.length; i++) {
79
if (num >= INT_NUMBERS[i]) {
80
if (num >= 100) {
81
sb.append(numberToWordsHelper(num / INT_NUMBERS[i]).append(" "));
82
}
83

84
sb.append(STRING_NUMBERS[i]).append(" ").append(numberToWordsHelper(num % INT_NUMBERS[i]));
85
break;
86
}
87
}
88
return sb.charAt(sb.length() - 1) == ' ' ? sb.deleteCharAt(sb.length() - 1) : sb; // trim
89
}
90
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0