[leetcode 10-13] 三、整数转换英文表示

在这里插入图片描述

	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))

猜你喜欢

转载自blog.csdn.net/weixin_45492560/article/details/120752627
今日推荐