Leetcode 273. Integer to English Words (python)

这篇博客主要介绍如何用Python解决LeetCode上的273题,即如何将整数转换为英文单词。博主建议读者直接查看LeetCode官方题解以获取详细解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Leetcode 273. Integer to English Words

题目

在这里插入图片描述

解法:

建议直接看lc官网:https://leetcode.com/problems/integer-to-english-words/

class Solution:
    def numberToWords(self, num: int) -> str:
        # 2^31 = 2 147 483 648
        def one(num):
            switcher = {
                1: 'One',
                2: 'Two',
                3: 'Three',
                4: 'Four',
                5: 'Five',
                6: 'Six',
                7: 'Seven',
                8: 'Eight',
                9: 'Nine'
            }
            return switcher.get(num)

        def two_less_20(num):
            switcher = {
                10: 'Ten',
                11: 'Eleven',
                12: 'Twelve',
                13: 'Thirteen',
                14: 'Fourteen',
                15: 'Fifteen',
                16: 'Sixteen',
                17: 'Seventeen',
                18: 'Eighteen',
                19: 'Nineteen'
            }
            return switcher.get(num)
        
        def ten(num):
            switcher = {
                2: 'Twenty',
                3: 'Thirty',
                4: 'Forty',
                5: 'Fifty',
                6: 'Sixty',
                7: 'Seventy',
                8: 'Eighty',
                9: 'Ninety'
            }
            return switcher.get(num)
        
        def two(num):
            if not num:
                return ''
            if num<10:
                return one(num)
            if num<20:
                return two_less_20(num)
            else:
                tenner = num//10
                rest = num - tenner*10
                return ten(tenner)+ ' ' +one(rest) if rest else ten(tenner)
        
        def three(num):
            hundred = num//100
            rest = num - hundred*100
            if hundred and rest:
                return one(hundred) + ' Hundred ' + two(rest)
            elif not hundred and rest:
                return two(rest)
        
            elif hundred and not rest:
                return one(hundred) + ' Hundred'
        if not num:
            return 'Zero'
        
        billon = num//1000000000
        millon = (num-billon*1000000000)//1000000
        thousand = (num-billon*1000000000-millon*1000000)//1000
        rest = num-billon*1000000000-millon*1000000-thousand*1000
        
        result = ''
        if billon:
            result += three(billon) + ' Billion'
        if millon:
            result += ' ' if result else ''
            result += three(millon) + ' Million'
        if thousand:
            result += ' ' if result else ''
            result += three(thousand) + ' Thousand'
        if rest:
            result += ' ' if result else ''
            result += three(rest)
        return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值