首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:整数转换英文表示

#yyds干货盘点# LeetCode程序员面试金典:整数转换英文表示

时间:2023-10-14 21:05:34浏览次数:34  
标签:yyds curr String 金典 num StringBuffer Hundred LeetCode append

题目:

将非负整数 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"

代码实现:

class Solution {
    String[] singles = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
    String[] teens = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
    String[] tens = {"", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
    String[] thousands = {"", "Thousand", "Million", "Billion"};

    public String numberToWords(int num) {
        if (num == 0) {
            return "Zero";
        }
        StringBuffer sb = new StringBuffer();
        for (int i = 3, unit = 1000000000; i >= 0; i--, unit /= 1000) {
            int curNum = num / unit;
            if (curNum != 0) {
                num -= curNum * unit;
                StringBuffer curr = new StringBuffer();
                recursion(curr, curNum);
                curr.append(thousands[i]).append(" ");
                sb.append(curr);
            }
        }
        return sb.toString().trim();
    }

    public void recursion(StringBuffer curr, int num) {
        if (num == 0) {
            return;
        } else if (num < 10) {
            curr.append(singles[num]).append(" ");
        } else if (num < 20) {
            curr.append(teens[num - 10]).append(" ");
        } else if (num < 100) {
            curr.append(tens[num / 10]).append(" ");
            recursion(curr, num % 10);
        } else {
            curr.append(singles[num / 100]).append(" Hundred ");
            recursion(curr, num % 100);
        }
    }
}

标签:yyds,curr,String,金典,num,StringBuffer,Hundred,LeetCode,append
From: https://blog.51cto.com/u_13321676/7863101

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:最小操作次数使数组元素相等
    1.简述:给你一个长度为 n 的整数数组,每次操作将会使 n-1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。 示例1:输入:nums=[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3]=>[2,3,3]=>[3,4,3]=>[4,4,4]示例2:输入:nums=[1......
  • LeetCode题库22.括号生成
     classSolution:defgenerateParenthesis(self,n:int)->List[str]:ifn==1:return['()']ifnotn:returnNonestack,res,l,r=[],[],[],[]for_inrange(n):l.append(......
  • #yyds干货盘点#Electron 主进程和渲染进程
    本节我们来学习什么是主进程和渲染进程,主进程与渲染进程之间有什么区别,主进程和渲染进程之间的通信。下面我们先来看一下进程的概念。进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。什么是主进程在 Electro......
  • # yyds干货盘点 # Pandas将三个聚合结果的列,如何合并到一张表里?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【斌】问了一个Pandas数据处理的问题,一起来看看吧。求教:将三个聚合结果的列,如何合并到一张表里?这是前两列,能够合并。这是第三列,加权平均,也算出来了。但我不会合并。。。。二、实现过程后来【隔壁......
  • #yyds干货盘点# LeetCode程序员面试金典:用最少数量的箭引爆气球
    1.简述:有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i]=[xstart,xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点 完全垂直 地射出。在坐标 x 处射出一......
  • #yyds干货盘点# LeetCode程序员面试金典:丢失的数字
    题目:给定一个包含 [0,n] 中 n 个数的数组 nums ,找出 [0,n] 这个范围内没有出现在数组中的那个数。 示例1:输入:nums=[3,0,1]输出:2解释:n=3,因为有3个数字,所以所有的数字都在范围[0,3]内。2是丢失的数字,因为它没有出现在nums中。示例2:输入:nums=[0,1]输出:2......
  • LeetCode27. 移除元素
    描述给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1输入:nums=[3,2,2,3......
  • 算法训练day30 LeetCode93.78.90
    算法训练day30LeetCode93.78.9093.复原IP地址题目93.复原IP地址-力扣(LeetCode)题解代码随想录(programmercarl.com)使用'.'切割字符串、结束条件为字符串中有三个'.'、同时要确定字符串符合的条件长度为不为1时,首字符不能是0数值大小在[0,255]单个字符在'0'......
  • LeetCode704. 二分查找
    描述给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2输入:nums=[-1,0,3,5,9,1......
  • LeetCode Day02 977&209&59
    第一题是[977. 有序数组的平方]这题解题思路依旧可以用双指针,指针分别指向数组的头尾两端,然后对两端求乘积比较大小,把乘积值更大的存储到数组尾端,然后指针更新位置,代码如下。publicint[]sortedSquares(int[]nums){//res用于存储平方和结果int[]res=ne......