LeetCode题解(0273):将整数转换为英文表示(Python)
发布日期:2021-06-29 19:57:54
浏览次数:2
分类:技术文章
本文共 2293 字,大约阅读时间需要 7 分钟。
题目:(困难)
标签:字符串、分治算法
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( 1 ) O(1) O(1) | O ( 1 ) O(1) O(1) | 40ms (83.73%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。
解法一:
class Solution: def numberToWords(self, num: int) -> str: # 定义字典 D1 = { 1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"} D2 = { 10: "Ten", 11: "Eleven", 12: "Twelve", 13: "Thirteen", 14: "Fourteen", 15: "Fifteen", 16: "Sixteen", 17: "Seventeen", 18: "Eighteen", 19: "Nineteen"} D3 = { 2: "Twenty", 3: "Thirty", 4: "Forty", 5: "Fifty", 6: "Sixty", 7: "Seventy", 8: "Eighty", 9: "Ninety"} # 处理两位数以内的情况 def get_0_99(n): if n == 0: return [] elif n < 10: return [D1[n]] elif n < 20: return [D2[n]] else: a, b = divmod(n, 10) if b == 0: return [D3[a]] else: return [D3[a], D1[b]] # 处理三位数以内的情况 def get_0_999(n): a, b = divmod(n, 100) if n < 100: return get_0_99(b) else: return [D1[a], "Hundred"] + get_0_99(b) # 处理万亿以内的情况 ans = [] if num >= 1000000000: now, num = divmod(num, 1000000000) ans += get_0_999(now) + ["Billion"] if num >= 1000000: now, num = divmod(num, 1000000) ans += get_0_999(now) + ["Million"] if num >= 1000: now, num = divmod(num, 1000) ans += get_0_999(now) + ["Thousand"] ans += get_0_999(num) return " ".join(ans) if ans else "Zero"if __name__ == "__main__": print(Solution().numberToWords(0)) # "Zero" print(Solution().numberToWords(20)) # "Twenty" print(Solution().numberToWords(123)) # "One Hundred Twenty Three" print(Solution().numberToWords(12345)) # "Twelve Thousand Three Hundred Forty Five" print(Solution().numberToWords(1234567)) # "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven" print(Solution().numberToWords( 1234567891)) # "One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"
转载地址:https://dataartist.blog.csdn.net/article/details/107998766 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月18日 20时08分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
C#中使用XmlWriter写入XML数据
2019-04-30
C#鼠标按住标题移动时移动窗体
2019-04-30
存储过程中调用EXECUTE IMMEDIATE的“权限不足”问题
2019-04-30
G711 G723 G729线路占多少带宽问题
2019-04-30
针对文本文件单行连续多字符内容根据分隔符号转多行方法
2019-04-30
OPPO A37M刷机
2019-04-30
通过代理使用远程桌面(Mstcs)
2019-04-30
XP下安装VS2003 ,安装先决条件IIS后,提示未安装frontpage服务器扩展
2019-04-30
linux中的mail命令
2019-04-30
如何排除网络故障1:常见的问题和解决这些问题的工具
2019-04-30
Bypass交换机-确保关键链路的高可用性 (HA)
2019-04-30
如何实现网络端到端监控
2019-04-30
如何排除网络故障2:解决网络取证问题
2019-04-30
虹科方案|虹科Vdoo安全平台-D-Link路由器的安全漏洞
2019-04-30
弘辽科技:怎么在淘宝上开公益店铺?怎么设置公益宝贝?
2019-04-30
弘辽科技:做母亲、还是创业?我做了一个双项选择题
2019-04-30
弘辽科技:夜经济 偷偷长成36万亿!
2019-04-30
弘辽科技:从导购、电商到直播社区,蘑菇街为何做不好电商生意?
2019-04-30