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 648def 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//10rest = num - tenner*10return ten(tenner)+ ' ' +one(rest) if rest else ten(tenner)def three(num):hundred = num//100rest = num - hundred*100if 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//1000000000millon = (num-billon*1000000000)//1000000thousand = (num-billon*1000000000-millon*1000000)//1000rest = num-billon*1000000000-millon*1000000-thousand*1000result = ''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