栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode——273. 整数转换英文表示(Integer to English Words)[中等]——分析及代码(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode——273. 整数转换英文表示(Integer to English Words)[中等]——分析及代码(C++)

LeetCode——273. 整数转换英文表示[Integer to English Words][中等]——分析及代码[C++]
  • 一、题目
  • 二、分析及代码
    • 1. 迭代
      • (1)思路
      • (2)代码
      • (3)结果
  • 三、其他

一、题目

将非负整数 num 转换为其对应的英文表示。

示例 1:

输入:num = 123
输出:"One Hundred Twenty Three"

示例 2:

输入:num = 12345
输出:"Twelve Thousand Three Hundred Forty Five"

示例 3:

输入:num = 1234567
输出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

示例 4:

输入:num = 1234567891
输出:"One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"

提示:

  • 0 <= num <= 2^31 - 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-to-english-words
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、分析及代码 1. 迭代 (1)思路

根据题目要求,以每 3 位为一个单位,迭代地进行表示。

(2)代码
class Solution {
public:
    vector singles = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};//个位[1,9]
    vector teens = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};//[10,19]
    vector tens = {"", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};//十位[1,9]
    vector thousands = {"", "Thousand", "Million", "Billion"};//单位

    string numberToWords(int num) {
        if (num == 0) {
            return "Zero";
        }
        string str;//英文表示的字符串
        for (int i = 3; i >= 0; i--) {//从大到小遍历各单位
            int unit = pow(1000, i), curNum = num / unit;//单位值,当前单位下的数值
            if (curNum > 0) {
                //百位表示
                if (curNum / 100 > 0) {
                    str += singles[curNum / 100] + " Hundred ";
                }
                curNum %= 100;
                //十位和个位表示
                if (curNum >= 20) {
                    str += tens[curNum / 10] + " ";
                    if (curNum % 10 > 0) {
                        str += singles[curNum % 10] + " ";
                    }
                } else if (curNum >= 10) {
                    str += teens[curNum % 10] + " ";
                } else if (curNum > 0) {
                    str += singles[curNum] + " ";
                }
                //单位表示
                if (i > 0) {
                    str += thousands[i] + " ";
                }
            }
            num %= unit;//过滤当前单位已完成表示的部分
        }
        str.pop_back();//删除最后一个空格
        return str;
    }
};
(3)结果

执行用时 :0 ms,在所有 C++ 提交中击败了 100.00% 的用户;
内存消耗 :7.2 MB,在所有 C++ 提交中击败了 38.45% 的用户。

三、其他

暂无。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号