将非负整数转换为其对应的英文表示,给定的输入是保证小于 231 - 1 的。
示例:
123 -> "One Hundred Twenty Three"
12345 -> "Twelve Thousand Three Hundred Forty Five"
1234567 -> "One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"

详见:https://leetcode.com/problems/integer-to-english-words/description/

Java实现:

每三位数一读。每读三位数的时候在三位数后面加上单位(Thousand, Million, or Billion)即可。其中的关键点是当读取的三位数是“0”,那么后面的单位就要舍弃。比如1000000,读第二个三位数是“000”,那么对应的单位Thousand是要舍弃的,否则就会变成One Million Thousand的错误结果。

class Solution {//全局变量先把要用的英文存起来String[] units = {"", " Thousand", " Million", " Billion"};String[] num0To9 = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};String[] num10To19 = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};String[] num10To90 = {"Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};public String numberToWords(int num) {if (num == 0){return "Zero";}String res = "";   int count = 0; //记录当前三位数下后面跟的单位while (num > 0) {String tmp = "";tmp = units[count]; //记录当前三位数下后面跟的单位int cur = num % 1000; //每三位一读,从后往前String pre = convert(cur); //转化当前数字最后的三位数if (pre == ""){tmp = ""; //如果是"000",那么就等于什么都没发生,舍弃单位}else{tmp = convert(cur) + tmp; //否则结合结果和单位}if (res.length() != 0 && res.charAt(0) != ' '){ //处理一下加上单位的空格情况res = tmp + " " + res;}else{res = tmp + res;}num = (num - num % 1000) / 1000; //处理往前三位数count++;}return res;}//转化任意三位数public String convert(int num) {if (num == 0){ return "";}if (num < 10){return num0To9[num];}else if (num >= 10 && num <= 19){ return num10To19[num - 10];}else if (num >= 20 && num <= 99) {if (num % 10 == 0){return num10To90[num / 10 - 1];}else{String s1 = num0To9[num%10];String s2 = num10To90[num/10 - 1];return s2 + " " + s1;}}else {if (num % 100 == 0){return num0To9[num / 100] + " Hundred";}else {String tmp = convert(num % 100);return convert(num - num % 100) + " " + tmp;}}    }
}

C++实现:

class Solution {
public:string numberToWords(int num) {string res = convertHundred(num % 1000);vector<string> v = {"Thousand", "Million", "Billion"};for (int i = 0; i < 3; ++i) {num /= 1000;res = num % 1000 ? convertHundred(num % 1000) + " " + v[i] + " " + res : res;}while (res.back() == ' '){res.pop_back();}return res.empty() ? "Zero" : res;}string convertHundred(int num) {vector<string> v1 = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};vector<string> v2 = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};string res;int a = num / 100, b = num % 100, c = num % 10;res = b < 20 ? v1[b] : v2[b / 10] + (c ? " " + v1[c] : "");if (a > 0) {res = v1[a] + " Hundred" + (b ? " " + res : "");}return res;}
};

参考:https://www.cnblogs.com/grandyang/p/4772780.html

转载于:https://www.cnblogs.com/xidian2014/p/8761300.html

273 Integer to English Words 整数转换英文表示相关推荐

  1. leetcode 273. 整数转换英文表示[困难]

    整数转换英文表示 将非负整数 num 转换为其对应的英文表示. 示例 1: 输入:num = 123 输出:"One Hundred Twenty Three" 示例 2: 输入: ...

  2. Leetcode 273.整数转换英文表示

    整数转换英文表示 将非负整数转换为其对应的英文表示.可以保证给定输入小于 231 - 1 . 示例 1: 输入: 123 输出: "One Hundred Twenty Three" ...

  3. LeetCode第一刷--leetcode提交格式介绍与273. Integer to English Words

    第一次玩Leetcode,对代码提交格式不了解,提交了一上午,略尴尬 leetcode确实有很多有意思的地方,不像以前做各个高校ACM练习,leetcode会给出错误信息(哪个数据的错了),也会提供测 ...

  4. 每日一题 11.9 整数转换英文表示

    每日一题 11.9 整数转换英文表示 一.题目概述 这个题是困难的题,第一眼看到这个题还是比较怕的,但是看了一下具体的内容,感觉还好,但是我有点弄不明白的是,英文里最大计数单位是多少,有没有比tril ...

  5. LeetCode-Python-273. 整数转换英文表示

    将非负整数转换为其对应的英文表示.可以保证给定输入小于 231 - 1 . 示例 1: 输入: 123 输出: "One Hundred Twenty Three" 示例 2: 输 ...

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

    题意:给出一下正整数,输出英文表示 思路:每三个数一组,因为最多有三组,对应的分别为Billion,Million,Thousand.然后针对每组的数输出 代码如下: public class Sol ...

  7. 273. 整数转换英文表示(模拟)

    将非负整数转换为其对应的英文表示.可以保证给定输入小于 231 - 1 . 示例 1: 输入: 123 输出: "One Hundred Twenty Three" 示例 2: 输 ...

  8. LeetCode 273. 整数转换英文表示

    1. 题目 将非负整数转换为其对应的英文表示.可以保证给定输入小于 231 - 1 . 示例 1: 输入: 123 输出: "One Hundred Twenty Three"示例 ...

  9. [leetcode] 273.Integer to English Words

    题目: Convert a non-negative integer to its english words representation. Given input is guaranteed to ...

最新文章

  1. ICLR2020放榜 687篇入选34篇得满分! 且看OpenReview数据图文详解
  2. 初学算法-快速排序与线性时间选择(Deterministic Selection)的C++实现
  3. 变与不变——一汽-大众的数字化人才战略“突围”
  4. python枪战项目计划书_人肉(共享)代购项目计划书(示例代码)
  5. 【Kafka】kafka 0.10.0 版本低级消费 API
  6. Python风格总结:if语句
  7. Postman系列之基本操作及设置
  8. llinux文本三剑客之grep、egrep及相应的正则表达式和用法
  9. zuul 网关的用途_微服务之基于Zuul自研服务网关
  10. 【大数据部落】R语言犯罪率回归模型报告Regression model on crimerate report
  11. mysql数据库的属性_mysql 数据库属性
  12. 海康威视摄像头重置密码
  13. NI CompactRIO、labview在车载数据采集中的应用
  14. VFB组件:Scintilla控件(代码编辑器)
  15. unity3d利用pano2VR实现全景视图效果
  16. 车牌字符识别LPRNet:License Plate Recognition via Deep Neural Networks
  17. java 错误: 无法将类 Customer中的构造器 Customer应用到给定类型
  18. android 怎么看架构,怎么查看手机设备架构
  19. 广东惠州港口吞吐量稳中有升
  20. GlyphRun 对象和 Glyphs 元素简介

热门文章

  1. STC89C52单片机 定时器
  2. centos7 启动流程图_Linux启动过程详解
  3. steam_api.dll文件
  4. Maxon Cinema 4D Studio S22.114中文版
  5. 外卖(food) 洛谷4040宅男计划 三分套二分贪心
  6. JS 时间转化为几分钟前 几小时前 几天前
  7. Codeforces 833B 题解(DP+线段树)
  8. 手机端自适应布局demo
  9. 今天是周一,又是热的天气笼罩。
  10. Lucky Substrings