当前位置: 首页 > news >正文

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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

根据英文的表达习惯,数字被分为三个三个一组,一般以逗号隔开,比如1,000,000,000。

所以不难发现本题的核心目标就是,将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
http://www.jsqmd.com/news/1282059/

相关文章:

  • 基于SpringBoot的公租房管理维护系统(Java+SpringBoot+MySQL)| 计算机毕业设计 附源码论文PPT
  • 计算机毕业设计之基于springboot的动漫信息管理系统
  • 上海本地正规黄金回收公司线下实探 五家体验评分 - 讯息早知道
  • 2026北京空间装饰软装配套品牌推荐榜:室内装修、工装家装、窗帘布艺定制、软包翻新选择指南 - 海棠依旧大
  • 剑指offer题解59: 滑动窗口的最大值
  • Unlock Music终极指南:快速掌握音频解密与音乐格式转换
  • 终极Linux文件搜索革命:FSearch如何让文件查找快如闪电
  • 霞鹜文楷:如何用这款免费开源字体彻底改变你的中文排版体验?
  • C语言指针完全指南:从基础到高级应用
  • ExifToolGUI:免费开源的照片元数据批量编辑与管理终极指南
  • shared_ptr简单应用
  • 3步安装!GBFR-Logs:碧蓝幻想Relink玩家的终极战斗数据分析工具
  • 行业观察:2026 长沙本土财税机构实力对比,靠谱代理记账服务商参考名录出炉 - 财税推荐官
  • 2026杭州办公室装修设计工装公司哪家靠谱?全业态深度解析指南 - 装修新知
  • 27.4%高增速!工业6G网关2026-2032年增长预期释放产业新动能
  • 还在为无法保存微信视频号内容而烦恼吗?这个神器让你轻松捕获全网视频资源
  • 京城芬迪Peekaboo与法棍包回收价值PK:同门双雄,谁在二手市场更受欢迎? - 日常财经早知道
  • log4j:WARN No appenders could be found for logger 报错解决办法
  • 电商项目专题(三)-项目搭建
  • P1332 血色先锋队复盘
  • 2026新版遂宁防水补漏服务商参考|阳台渗漏修缮方案指南 - 筑宅安
  • 2026年武汉黄陂区管道疏通避坑指南:金池师傅教你识别隐形收费 - 余生黄金回收
  • 2026西安黄金回收五区深度走访实录:未央雁塔长安灞桥莲湖,把临街门店的真实内幕一次说清 - 人间烟火小记
  • 基于SpringBoot的企业人事管理系统(Java+SpringBoot+MySQL)| 计算机毕业设计 附源码论文PPT
  • CT值到灰度值的映射, 以及windowing中的窗宽和窗位
  • 3步掌握星露谷物语农场规划器:免费工具打造完美农场
  • 免费开源鼠标连点器终极指南:5分钟快速实现自动化点击
  • 2026松江管道疏通防坑实测邻里帮师傅上门快 - 余生黄金回收
  • P1135 奇怪的电梯复盘
  • Blender终极贝塞尔曲线插件:Flexi工具完全指南