zoukankan      html  css  js  c++  java
  • leetcode刷题笔记 273题 整数转换英文表示

    leetcode刷题笔记 273题 整数转换英文表示

    源地址:273. 整数转换英文表示

    问题描述:

    将非负整数 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 <= 231 - 1

    //按英文数字处理逻辑 构建函数三位一处理
    object Solution {
        def numberToWords(num: Int): String = {
            val num0_19 = Array[String]("Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
            
            val num20_90 = Array[String]("Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
            
            val num1000 = Array[String]("Billion ", "Million ", "Thousand ", "")
            
            var ans = ""
            var numX = num
            
            def get(x: Int): String = {
                var res = ""
                var curX = x
                if (curX >= 100) {
                    res += num0_19(curX/100) + " Hundred "
                    curX = curX % 100
                }
                if (curX >= 20) {
                    res += num20_90(curX/10 - 2) + " "
                    curX = curX % 10
                    if (curX != 0) res += num0_19(curX) + ' '
                }
                else {
                    if (curX != 0) res += num0_19(curX) + ' '
                }
                return res
            }
            
            if (numX == 0) return "Zero"
            var i = 1e9
            var j = 0
            
            while (i >= 1) {
                if (numX >= i) {
                    ans += get((numX/i).toInt) + num1000(j)
                    numX = (numX % i).toInt
                }
                i /= 1000
                j += 1
            }
            
            return ans.dropRight(1)
        }
    }
    
  • 相关阅读:
    27:单词翻转
    c++自制锁机程序--两行代码
    19:字符串移位包含问题
    18:验证子串
    23:二维数组回形遍历
    Java获取程序或项目路径的常用方法
    java 、Android 提交参数转码问题
    java 上传图片 打水印
    使用getGenericSuperclass()和getActualTypeArguments()将DAO做成泛型
    zoj 1010 Area【线段相交问题】
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13951403.html
Copyright © 2011-2022 走看看