【LeetCode】273. Integer to English Words
Integer to English Words
Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231 - 1.
For example,
123 -> "One Hundred Twenty Three" 12345 -> "Twelve Thousand Three Hundred Forty Five" 1234567 -> "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
先把数字分割成4个三分位处理。前3个三分位分别加上Billion,Million,Thousand。
三分位处理函数为Helper()
class Solution { public: string Helper(string numStr, string dict1[], string dict2[], string dict3[]) { int num = atoi(numStr.c_str()); if(num == 0) return ""; else { string ret = ""; int hundred = numStr[0] - '0'; int ten = numStr[1] - '0'; int one = numStr[2] - '0'; if(hundred != 0) ret += dict1[hundred-1] + " Hundred"; if(ten == 0) { if(one == 0) return ret; else return (ret=="")?(dict1[one-1]):(ret+" "+dict1[one-1]); } else if(ten == 1) { return (ret=="")?(dict2[one]):(ret+" "+dict2[one]); } else { if(one == 0) return (ret=="")?(dict3[ten-2]):(ret+" "+dict3[ten-2]); else return (ret=="")?(dict3[ten-2]+" "+dict1[one-1]):(ret+" "+dict3[ten-2]+" "+dict1[one-1]); } } } string numberToWords(int num) { if(num == 0) return "Zero"; else { string ret = ""; string dict1[9] = {"One","Two","Three","Four","Five","Six","Seven","Eight","Nine"}; string dict2[10] = {"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen", "Eighteen","Nineteen"}; string dict3[8] = {"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}; string numStr = to_string(num); int len = numStr.size(); string padding = string(12-len, '0'); numStr = padding + numStr; string billionStr = Helper(numStr.substr(0,3), dict1, dict2, dict3); if(billionStr != "") ret += billionStr + " Billion"; string millionStr = Helper(numStr.substr(3,3), dict1, dict2, dict3); if(millionStr != "") ret += (ret=="")?(millionStr+" Million"):(" "+millionStr+" Million"); string thousandStr = Helper(numStr.substr(6,3), dict1, dict2, dict3); if(thousandStr != "") ret += (ret=="")?(thousandStr+" Thousand"):(" "+thousandStr+" Thousand"); string oneStr = Helper(numStr.substr(9,3), dict1, dict2, dict3); if(oneStr != "") ret += (ret=="")?(oneStr):(" "+oneStr); return ret; } } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架