LeetCode-Python-273. 整数转换英文表示

LeetCode-Python-273. 整数转换英文表示
将非负整数转换为其对应的英文表示。可以保证给定输入小于 231 - 1 。示例 1:输入: 123输出: One Hundred Twenty Three示例 2:输入: 12345输出: Twelve Thousand Three Hundred Forty Five示例 3:输入: 1234567输出: One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven示例 4:输入: 1234567891输出: One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One来源力扣LeetCode链接https://leetcode-cn.com/problems/integer-to-english-words著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。思路根据英文的表达习惯数字被分为三个三个一组一般以逗号隔开比如1000000000。所以不难发现本题的核心目标就是将1000以下的整数转换成英文的代码写出来然后将数字每三个一组不断重复调用转换代码最后将答案拼接在一起即可。难不是很难但是特别繁琐注意英语拼写注意edge case。class Solution(object): def numberToWords(self, num): :type num: int :rtype: str def helper(num): #本函数用于处理1000 以下的整数转英文 n int(num) num str(n) if n 100: return subhelper(num) else: return [One, Two, Three, Four, Five, Six, Seven, Eight, Nine][int(num[0]) - 1] Hundred subhelper(num[1:]) if num[1:] ! 00 else [One, Two, Three, Four, Five, Six, Seven, Eight, Nine][int(num[0]) - 1] Hundred def subhelper(num): #本函数用于处理100 以下的整数转英文 n int(num) l1 [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine] l2 [Ten, Eleven, Twelve, Thirteen, Fourteen, Fifteen, Sixteen, Seventeen, Eighteen, Nineteen] l3 [Twenty, Thirty, Forty, Fifty, Sixty, Seventy, Eighty, Ninety] if n 10: return l1[int(num)] if 10 n 20: return l2[n - 10] if 20 n 100: return l3[int(num[0]) - 2] l1[int(num[1])] if num[1] ! 0 else l3[int(num[0]) - 2] res if num 1000000000: res helper(str(num)[0]) Billion if str(num)[1:4] ! 000: res helper(str(num)[1:4]) Million if str(num)[4:7] ! 000: res helper(str(num)[4:7]) Thousand if str(num)[7:] ! 000: res helper(str(num)[7:]) elif num 1000000: res helper(str(num)[:-6]) Million if str(num)[-6:-3] ! 000: res helper(str(num)[-6:-3]) Thousand if str(num)[-3:] ! 000: res helper(str(num)[-3:]) elif num 1000: res helper(str(num)[:-3]) Thousand if str(num)[-3:] ! 000: res helper(str(num)[-3:]) else: return helper(str(num)) return res