【算法】Integer to English Words 数字转换单词

word-conversion:整数到英式单词的单词转换 整数到英语单词的单词转换 描述 将Java int取值范围在0到999,999,999(含)之间,并以英式英语单词的形式返回等效数字(字符串)。 样本数据输入输出0零1 1 21 21 1 105 1 123 1235 3 1005 1,05 1042 1,242 1105 1155 56945781五百六十四万九千四十五七百八十九999999999九百九十九十九万九千九百九十九。 如何使用此代码 主要类是Conversion.java,它包含一个静态方法“ String convert(int value)” 立即下载

【算法】Integer to English Words 数字转换单词

题目

Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 2^31 - 1.

Example 1:

Input: 123
Output: “One Hundred Twenty Three”
Example 2:

Input: 12345
Output: “Twelve Thousand Three Hundred Forty Five”
Example 3:

Input: 1234567
Output: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
Example 4:

Input: 1234567891
Output: “One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One”

一个小于 2^31 - 1 的非负整数,转换成英文单词

解题思路

  1. 从 0 ~ 19 都有单独的单词对应
  2. 从 20 ~ 99 均为 Twenty One,这种两个单词组成的数字,用 / 和 % 计算出十位和个位,然后将对应单词组合即可
  3. 从 100 开始就有了 Hundred,Thousand,Million,Billion 数字单位,可依据相应位数用 / 和 % 计算出数字单位前后的数,并递归找到对应单词,将数字单位插入中间即可
  4. 如 20,100,1000 等这类整数,拆分成两个数字时,第二个数字为零,此情况下第二个数字不用进行递归操作,直接在数字单位后添加空字符即可

代码实现

Runtime: 8 ms
Memory: 20.4 MB

let belowTen = ["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"]
let teens = ["Ten", "Eleven", "Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"]
let belowHundreds = ["","Ten","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"]
class Solution {
    func numberToWords(_ num: Int) -> String {
        var result = ""
        var secNum = 0
        if(num < 10){
            //个位数
            result = belowTen[num]
        }else if (num < 20){
            //10 至 19
            result = teens[num % 10]
        }else if (num < 100){
            //20 至 99
            //判断类似于 Twenty One 这种两个单词表示的情况
            secNum = num % 10
            result = belowHundreds[num / 10] + ((secNum == 0) ? "" :" " + belowTen[secNum])
        } else if (num < 1000) {
            // 100 至 999
            // 从百位数拆分 并将百位数单位插入 并将十个位递归
            secNum = num % 100
            return belowTen[num / 100] + " Hundred" + ((secNum == 0) ? "" :" " + self.numberToWords(secNum))
        } else if (num < 1000000) {
            // 1001 至 999999
            // 从千位数拆分 并将千位数单位插入 并将拆开的两部分递归
            secNum = num % 1000
            return self.numberToWords(num / 1000) + " Thousand" + ((secNum == 0) ? "" :" " + self.numberToWords(secNum))
        } else if (num < 1000000000) {
            // 1000001 至 1000000000
            // 从百万位数拆分 并将百万位数单位插入 并将拆开的两部分递归
            secNum = num % 1000000
            return self.numberToWords(num / 1000000) + " Million" + ((secNum == 0) ? "" :" " + self.numberToWords(secNum))
        } else {
            // 大于 1000000001
            // 从十亿位数拆分 并将十亿位数单位插入 并将拆开的两部分递归
            secNum = num % 1000000000
            return self.numberToWords(num / 1000000000) + " Billion" + ((secNum == 0) ? "" :" " + self.numberToWords(secNum))
        }
        return result
    }
}

代码地址:https://github.com/sinianshou/EGSwiftLearning

黑猫带你学eMMC协议第22篇:emmc可靠写详解(Write Reliability) 1 前言 1.1 声明 本文依据eMMC JEDEC5.1、网络资料及个人工作经验整理而成,如有部分错误请留言。 本文部分内容可能源自网络,侵删。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 1、什么是可靠性写属性(Write Reliability)? 2、可靠写和普通的写有什么区别? 3、设置可靠写的流程及流程框图。 4、可靠写需要遵循哪些规则? 1.3 参考链接 本文主要参考链接:http://www.up48.com/cn/support/8_37.html 2 什么 阅读详情

相关推荐

COMSOL后处理与可视化

公众号→【COMSOL仿真交流】←更多精彩内容 后处理是采用COMSOL建模的一个重要环节。通过软件自带的可视化工具,可以快速方便的展现仿真结果。 COMSOL为使用者提供了多种后处理工具,包括表面图、切面图、等值线图、流线图、线图、体图等等。可按功能分为数据集(储存数据的地方)、派生值和表单(对数据进行进一步的操作)、绘图组合绘图类型(显示数据结果的地方)、导出数据与生成报告。   如果想用origin、matlab对模拟数据做进一步的处理,导出excel格式的模拟结果,这可以通过“导出

midiio的博客 4027

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: 输入:n.

weixin_45512222的博客 509

IEC103协议实战指南:报文解析与传输优化策略

本文深入解析IEC103协议在电力自动化系统中的核心应用,重点拆解其固定帧与可变帧两种报文格式,并详细阐述了主从问答与非平衡传输机制。文章结合实战经验,针对报文解析中的常见问题(如字节序、超时重发)提供了解决方案,并探讨了传输层优化策略,旨在帮助工程师实现更可靠、高效的通信链路。

r2s3t4的博客 541

数字与英文单词的转换

import java.util.Scanner;//导入一个Scanner包 public class Conversion { //---------------------------------------------定义变量------------------------------------------------------ static String x[]={"zer

江东小熊熊 3080

广义标签多伯努利滤波器(GLMB):多目标跟踪中的动态身份维护理论与算法解析

目标集表示Xx1l1x2l2xNlNX{(x1​l1​x2​l2​xN​lN​)}xi∈Rdxi​∈Rd为目标状态(如位置、速度),li∈Lli​∈L为唯一标签(可数无限集,如自然数序列),N 为目标数(允许N0N=0N0,即空集)。GLMB 通过广义化标签多伯努利分布,将多目标跟踪从 “状态估计” 提升至 “动态身份 - 状态联合建模”,成为复杂场景下精准跟踪的核心技术。

qq_44965657的博客 1595

【论文精读】《Towards Deep Learning Models Resistant to Adversarial Attacks》

本文探讨了深度学习模型在面对对抗性攻击时的脆弱性,并提出了一种基于鲁棒优化的方法来增强神经网络的对抗鲁棒性。通过鞍点优化框架,作者提供了对抗攻击和防御机制的统一视角,并在MNIST和CIFAR-10数据集上验证了其方法的有效性。对抗训练的核心思想是将对抗样本引入训练过程,使模型能够学习到对抗样本的特征,从而提升其鲁棒性。本文通过鞍点优化框架提出了一种基于鲁棒优化的对抗训练方法,显著提升了深度学习模型的对抗鲁棒性。本文为深度学习模型的对抗鲁棒性研究提供了新的理论和实证支持,同时为未来研究指明了方向。

nmdbbzcl的博客 610

将数字转换为单词

在访问对象对话框中,单击“模块” 单击新建以创建新模块 复制以下代码,然后将其粘贴到新模块中: FunctionSayNo(ByValNAsCurrency)AsString ConstThousand=1000@ ConstMillion=Thousand*Thousand ConstBillion=Thousand*Mil...

IT与开发人员的地盘 388

S7-1200 PN与G120变频器控制起停及调速PROFINET实现详解

S7-1200 PLC与G120变频器通过PROFINET通信可实现高效、实时的电机控制。2. 《S7-1200与G120 CU250S-2PN的PROFINET通讯指南》- 控制器:S7-1200 PLC (如1214C DC/DC/DC)- 变频器:G120 CU250S-2PN (带PROFINET接口)- 输出区(PZD1-2):控制字(16位)、速度设定值(16位)- 输入区(PZD1-2):状态字(16位)、实际速度值(16位)- P922=1:选择报文类型为"标准报文1 (PZD2/2)"

电工 1865

LeetCode Integer to English Words(整数转化为英文字母)

题意:给出一下正整数,输出英文表示 思路:每三个数一组,因为最多有三组,对应的分别为Billion,Million,Thousand。然后针对每组的数输出 代码如下: public class Solution { private String[] bigNum = {"Billion", "Million", "Thousand","" }; private String[

多看多听多总结 916

【阿里AgentScope框架】多框架组合:AgentScope加LangChain,让你的开发效率直线上升

本文以一个例子来看下AgentScope框架和LangChain如何实现融合使用,真的超级简单,一看就懂。这是一种思路,为多种框架的融合使用提供借鉴。

同学小张的博客 3469

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[leetcode] Integer to English Words

1道模拟题花了2个多小时,我也是醉了。一方面由于好久没有刷题了,一方面这道题乱七八糟的细节特别多。于是就想简单总结下。 题意: 将整型数字(231-1以内)转化成英文单词,如: 思路很普通: 2^31 = 2 147 483 648, 我们可以将数字转化成字符串后,每3个字符分为1组,整体字符串无非就是每组数字构成的串+“Billion/Million/Thousand”之类; 可

曲径通幽处 1689

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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 Th

bestwait的博客 305

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[leetcode] 273. Integer to English Words

Description Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231 - 1. Example 1: Input: 123 Output: "One Hundred Twenty Three" Example 2: ...

Learning from the mistakes 314

LeetCode273 Integer to English Words

将数字转化成英语单词。 分析单词可以发现每1000之间是有规律的。

一个码农 548

[leetcode 273]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

ER_Plough的专栏 733

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 Th

小雄鹿的博客 322

Leetcode: 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 Thre

YMHH的专栏 412

LeetCode -- Integer to English Words

LeetCode -- Integer to English Words

我的英文站点:https://iorilan.medium.com/ 1664

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 Th

jeason29的专栏 631

Leetcode 273 Integer to English Words

思路: 这题思路很简单,就是数字转文字,每三个数字为一组。刚看到这题的发现是hard,以为很难,但是想了想,做法很简单,也很容易想到。后来在做的时候才发现这道题的真谛是什么,eage case的处理,我写代码写了半小时,debug花了半个多小时。后来发现几乎都是eage case的问题。这侧面也体现了我逻辑并不严谨。这道题这么多test case,就是为了考察我们大家考虑地是否周到,很明显我并没有考虑地很周全。下面就展示一下代码: class Solution { public String nu.

GoodJobJasper的博客 218

[LeetCode] Integer to English Words

Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231−12^{31} - 1.For example, 123 -> “One Hundred Twenty Three” 12345 -> “Twelve Thousa

楚兴 2191

leetcode笔记:Integer to English Words

题目的要求很简单,将一个整数翻译为英文说法。根据提示我们知道,数字的读法是有规律的,只需每3位作一次翻译处理即可。在循环之前,把可能用到的字符串(0-9、10-19、20、30、40、...、90等数的英语)进行归类,放在几个数组里,分情况使用。在累加字符串时注意空格的使用。

liyuefeilong的专栏 1634
上一篇: 【算法】Text Justification 文本对齐
下一篇: 【算法】Split Array With Same Average 拆分数组为两个平均值的子数组
无良剑染
博客等级 码龄11年 3粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值