def __init__(self):
self.nt = ["Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve",
"Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"] # 前19
self.tens = ["", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"] # 0 1 的情况为''
self.t = ["Thousand", "Million", "Billion"]
def numberToWords(self, num: int) -> str:
def helper(num) -> list[str]:
if num < 20: # 小于20
return [self.nt[num]]
elif num < 100: #小于100的情况
res = [self.tens[num//10]]
if num % 10:
res += helper(num % 10) # 递归
return res
elif num < 1000:
res = [self.nt[num//100], "Hundred"]
if num % 100: # 取膜
res += helper(num%100)
return res
for p, w in enumerate(self.t, 1):#枚举,从下标为1开始
if num < 1000 ** (p + 1):
return helper(num // 1000 ** p) + [w] + helper(num % 1000 ** p) if num % 1000 ** p else helper(num // 1000 ** p) + [w]
return " ".join(helper(num))
[leetcode 10-13] 三、整数转换英文表示
猜你喜欢
转载自blog.csdn.net/weixin_45492560/article/details/120752627
今日推荐
周排行