Skip to content

Commit 3a46cbc

Browse files
authored
add js solution for lc problem No. 0273
1 parent 7613021 commit 3a46cbc

File tree

1 file changed

+40
-0
lines changed
  • solution/0200-0299/0273.Integer to English Words

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* @param {number} num
3+
* @return {string}
4+
*/
5+
const lessThanTwenty = [
6+
"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten",
7+
"Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"
8+
];
9+
10+
const tens = [
11+
"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"
12+
];
13+
14+
const thousands = [
15+
"", "Thousand", "Million", "Billion"
16+
];
17+
18+
function numberToWords(num) {
19+
if (num === 0) return "Zero";
20+
21+
let result = "";
22+
let i = 0;
23+
24+
while (num > 0) {
25+
if (num % 1000 !== 0) {
26+
result = helper(num % 1000) + thousands[i] + " " + result;
27+
}
28+
num = Math.floor(num / 1000);
29+
i++;
30+
}
31+
32+
return result.trim();
33+
}
34+
35+
function helper(num) {
36+
if (num === 0) return "";
37+
else if (num < 20) return lessThanTwenty[num] + " ";
38+
else if (num < 100) return tens[Math.floor(num / 10)] + " " + helper(num % 10);
39+
else return lessThanTwenty[Math.floor(num / 100)] + " Hundred " + helper(num % 100);
40+
}

0 commit comments

Comments
 (0)