罗马数字包含以下七种字符: I, V, X, LCD 和 M

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

  • I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
  • X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
  • C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。

示例 1:

输入: 3
输出: "III"

示例 2:

输入: 4
输出: "IV"

示例 3:

输入: 9
输出: "IX"

示例 4:

输入: 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.

示例 5:

输入: 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.

代码:

class Solution {public String intToRoman(int num) {Map<Integer , String> map = new HashMap<>();map.put( 1 , "I" );map.put( 5 , "V" );map.put( 10 , "X" );map.put( 50 , "L" );map.put( 100 , "C" );map.put( 500 , "D" );map.put( 1000 , "M" );map.put( 4 , "IV" );map.put( 9 , "IX" );map.put( 40 , "XL" );map.put( 90 , "XC" );map.put( 400 , "CD" );map.put( 900 , "CM" );String s = "";if ( num < 1 || num > 3999 ) {return s;}int a[] = new int[4];//提取各位数字,从低位到最高位for ( int i = 0 ; i < 4 ; i++ ) {a[ i ] = num % 10;num /= 10;}for ( int i = a.length - 1 ; i >= 0 ; i-- ) {if ( a[i] == 0 ) {continue;}else if ( map.containsKey((int)(a[i] * Math.pow( 10 , (double)i))) ) {s += map.get( (int)(a[i] * Math.pow( 10 , (double)i)) );}else {if ( a[i] > 1 && a[i] < 4 ) {while ( a[i] >= 1 ) {s += map.get( (int)( Math.pow( 10 , (double)i)) );a[i]--;}}else {s += map.get( (int)( 5*Math.pow( 10 , (double)i)) );while( a[i] > 5 ) {s += map.get( (int)( Math.pow( 10 , (double)i)) );a[i]--;}}}}return s;}
}

代码运行结果:

转载于:https://www.cnblogs.com/cg-bestwishes/p/10681177.html

LeetCode12- 整数转罗马数字相关推荐

  1. Leetcode12. 整数转罗马数字(C++)

    题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             ...

  2. Leetcode--12. 整数转罗马数字

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  3. C练题笔记之:Leetcode-12. 整数转罗马数字

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             1 ...

  4. LeetCode12. 整数转罗马数字

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即 ...

  5. LeetCode (12.整数转罗马数字)JAVA StringBuffer

    LeetCode (12.整数转罗马数字)JAVA StringBuffer 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...

  6. LeetCode 12 Integer to Roman (整数转罗马数字)

    题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description String M[] = {"", &q ...

  7. LeetCode 11盛水最多的容器12整数转罗马数字

    目录 盛水最多的容器 题目描述 分析 整数转罗马数字 题目描述: 分析 结语 盛水最多的容器 公众号:bigsai,回复进群加入打卡,回复bigsai获取3GB的pdf资源.点赞再看,养成习惯! 题目 ...

  8. lintcode :Integer to Roman 整数转罗马数字

    题目 整数转罗马数字 给定一个整数,将其转换成罗马数字. 返回的结果要求在1-3999的范围内. 样例 4 -> IV 12 -> XII 21 -> XXI 99 -> XC ...

  9. LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】

    盛水最多的容器 题目描述 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0 ...

  10. 12.整数转罗马数字-LeetCode

    1. 问题描述 这里直接采用的是leetcode上面的问题描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做  ...

最新文章

  1. Windows Server 2008 下ASP程序连接ORACLE数据库驱动错误
  2. python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程
  3. 远程登录的机器不是域控制器的方法
  4. 除了航拍,无人机也许能用于救火救灾
  5. html5——html5简介
  6. SELECT LAST_INSERT_ID() 的使用和注意事项
  7. 某公司邮件系统的安全检测
  8. 如何判断一个对象是否为jquery对象
  9. 支持向量机(SVM)推导
  10. SAP License:物料账差异
  11. python怎么把变量付给数组_使用Python将数组的元素导出到变量中(unpacking)
  12. 【转】为什么要用GIT而不是SVN
  13. atitit.浏览器web gui操作类库 和 操作chrome浏览器的类库使用总结
  14. JSONView下载安装
  15. 利用Matlab进行图像处理
  16. rufus安装linux到硬盘,怎么用rufus安装 kail linux 安装到u盘
  17. 【生活中的逻辑谬误】止于分析和简化主义
  18. 解决报错:%d format: a number is required, not str
  19. 常用文件的mime和mimetype的对应关系
  20. Tensorflow的基本使用方法

热门文章

  1. 使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库
  2. 告别苦逼的程序员生涯,我的CTO之路!
  3. outlook地址薄导入到FOXMAIL
  4. Node.js之readline模块的使用
  5. Java面试通关要点汇总集之工程篇参考答案
  6. IBATIS + ORACLE(二)
  7. some language grammars
  8. 领航的公开课 有空可以看看
  9. dhcp 中继代理配置方法
  10. 2012年生活方向盘