给定一个整数,打印该整数的英文描述。

示例 1:
输入: 123
输出: "One Hundred Twenty Three"

示例 2:
输入: 12345
输出: "Twelve Thousand Three Hundred Forty Five"

示例 3:
输入: 1234567
输出: "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

示例 4:
输入: 1234567891
输出: "One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"

分析:

方法:分治算法

英语的表示和汉语不同,它是隔着三位数表示,比如 "Thousand", "Million", "Billion",因此我们只需要将数字按三位分别进行添加英文即可,因为整形最大为 2147483647,刚好最高位就在 Billion 上,如果数字刚好在该位上,直接判断即可。我们可以将个位,十位,千位分别创建数组方便操作。

时间复杂度:O(1)        取决于数字的位数
空间复杂度:O(1)

class Solution {//英文private static String[] ones = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};private static String[] tens = {"", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};private static String[] trous = {"Thousand", "Million", "Billion"};private static int[] nums = {1000, 1000000, 1000000000};public String numberToWords(int num) {//0if(num == 0){return "Zero";}//结果StringBuilder sb = new StringBuilder();//1000 000 000if(num / nums[2] > 0){sb.append(ones[num / nums[2]]);sb.append(" ").append(trous[2]);num %= nums[2];}//1000 000if(num / nums[1] > 0){translate(num / nums[1], sb);sb.append(" ").append(trous[1]);num %= nums[1];}//1000if(num / nums[0] > 0){translate(num / nums[0], sb);sb.append(" ").append(trous[0]);num %= nums[0];}translate(num, sb);return sb.toString().trim();}//对一个千位数进行翻译public void translate(int num, StringBuilder sb){//百位if(num / 100 > 0){sb.append(" ").append(ones[num / 100]).append(" ").append("Hundred");num %= 100;}//十位if(num / 10 > 1){sb.append(" ").append(tens[num / 10]);num %= 10;}//个位if(num > 0){sb.append(" ").append(ones[num]);}}
}

题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/english-int-lcci

JAVA练习216-整数的英语表示相关推荐

  1. java整数的反转_反转Java中的整数

    要在Java中反转整数,请尝试以下代码- 示例import java.lang.*; public class Demo { public static void main(String[] args ...

  2. java整数的因式分解_如何在Java中找到整数的质数-因式分解

    java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...

  3. 如何在Java中找到整数的质因数–因式分解

    编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的质数因子是将精确地除以给定数字的所有质数. 例如,35的素数因 ...

  4. LeetCode题库整理【Java】—— 7整数反转

    LeetCode题库整理[Java] 7.整数反转 题目:给出一个32位的有符号整数,你需要将这个这个整数中每位上的数字进行反转. 示例1: 输入: 123 输出: 321 示例2: 输入: -123 ...

  5. java判断一个整数是不是素数(质数)

    java判断一个整数是不是素数(质数) /*** 判断一个数是不是素数(质数)* 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数.*/import java.util.Scann ...

  6. java存储整数,用于存储整数数值的是 JAVA四种整数数据类型的取值范围分别是多少...

    JAVA四种整数数据类型的取值范围分别是多少 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~32767,占用2个字节(-2的1 ...

  7. java将一个整数按字节输出_在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解。其他的三种类型如下:1、...

    在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1. 基本类型:short 二进制位数:16 ...

  8. JAVA毕业设计黑格伯爵国际英语贵族学校官网计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计黑格伯爵国际英语贵族学校官网计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计黑格伯爵国际英语贵族学校官网计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  9. java读取word中的英语音标(Kingsoft Phonetic Plain字体的)

    java读取word中的英语音标(Kingsoft Phonetic Plain字体的) 代码: 读取word中的文档遇到了带音标的,Kingsoft Phonetic Plain这种字体在后台打断点 ...

  10. Java判断一个整数有多少位

    Java判断一个整数有多少位 首先,封装一个判断位数的方法:使用for循环进行判断整数的位数.直到传进的整数小于数组中某个值时,停止循环. /*** 获取整数有多少位* @param num 要判断的 ...

最新文章

  1. matlab与acess连接问题
  2. python安装venv_Python创建virtualenv(虚拟环境)方法及安装Ubuntu
  3. 绘图中的drawRect
  4. 程序员你写的代码,被人挖出了黑产
  5. 项目进度计划甘特图_项目管理进度计划表制作及甘特图绘制方法
  6. longvalue_Java Short类longValue()方法及示例
  7. 神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python常量、变量和表达式)
  8. 年薪 37 万+,挪威科技大学(NTNU)招募博士,利用 ML 和 AI 进行钢桥结构健康监测和损伤检测...
  9. 判断用户用手机访问还是用电脑访问网页
  10. LDAP TLS配置
  11. 【专题】CSDN下载频道5月热门资源top100汇总
  12. C语言重载谭浩强,(完整)C语言谭浩强学习笔记(50页)-原创力文档
  13. 微信小程序tap事件中target与currentTarget的区别
  14. 赛马c语言编程,C/C++编程题之渊子赛马
  15. “21 天好习惯”第一期-4
  16. 通过BAPI方式展示长文本ADA_POPUP_WITH_TABLE
  17. 浮动广告代码在网页两侧
  18. 1.17 设置工作簿的页眉和页脚 [原创Excel教程]
  19. 主板维修测试软件,主板维修关键测试点(强烈推荐)
  20. 奈何桥上经过的地方,看醒了多少人

热门文章

  1. 随便说说,我回来啦~
  2. 中兴h118b改打印机服务器,TL-WR710N改打印机服务器 WR710硬改OpenWrt打印服务器
  3. 干涉光强公式怎么计算_光强及计算
  4. 算高差改正数的计算机程序,水准测量中测量高差的改正数怎么计算?
  5. Java Base64 加密与解密
  6. MATLAB从fig文件中获取数据
  7. Voltage Trackers for Sensors power supply
  8. linux usb有线网卡驱动_基于USB设备的Linux网络驱动程序开发
  9. 语言学句法分析树形图怎么画_树形图(句法)
  10. 博弈论中SG函数的解释与运用