Integer to English Words LeetCode solution in Python

1
class Solution:
2
def numberToWords(self, num: int) -> str:
3

4
if num == 0:
5
return "Zero"
6

7
dic1 = {1000000000: "Billion", 1000000: "Million", 1000: "Thousand", 1: ""}
8
dic2 = {
9
90: "Ninety",
10
80: "Eighty",
11
70: "Seventy",
12
60: "Sixty",
13
50: "Fifty",
14
40: "Forty",
15
30: "Thirty",
16
20: "Twenty",
17
19: "Nineteen",
18
18: "Eighteen",
19
17: "Seventeen",
20
16: "Sixteen",
21
15: "Fifteen",
22
14: "Fourteen",
23
13: "Thirteen",
24
12: "Twelve",
25
11: "Eleven",
26
10: "Ten",
27
9: "Nine",
28
8: "Eight",
29
7: "Seven",
30
6: "Six",
31
5: "Five",
32
4: "Four",
33
3: "Three",
34
2: "Two",
35
1: "One",
36
}
37

38
def construct_num(num):
39
ans = ""
40
d, num = divmod(num, 100)
41
if d > 0:
42
ans += dic2[d] + " " + "Hundred"
43
for k, v in dic2.items():
44
d, num = divmod(num, k)
45
if d > 0:
46
ans += " " + v
47
return ans.lstrip()
48

49
ans = ""
50
for k, v in dic1.items():
51
d, num = divmod(num, k)
52
if d > 0:
53
ans += " " + construct_num(d) + " " + v
54

55
return ans.strip()

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0