Leetcode算法Java全解答–12. 整数转罗马数字

文章目录

  • Leetcode算法Java全解答--12. 整数转罗马数字
    • 题目
    • 想法
    • 结果
    • 总结
    • 代码
      • 我的答案
      • 大佬们的答案
      • 测试用例
    • 其他

题目

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

 字符          数值I             1V             5X             10L             50C             100D             500M             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 的范围内。

示例:

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

想法

1.通过求商-求余获取数据

自己做一半就去找答案了

结果

总结

没有想到使用循环的方式
自己做一半就去找答案了

代码

我的答案

   /** Copyright (C), 2015-2018* FileName: Solution012* Author:   zhao* Date:     2018/11/8 19:35* Description: 12. 整数转罗马数字* History:* <author>          <time>          <version>          <desc>* 作者姓名           修改时间           版本号              描述*/
package com.lizhaoblog.mid;import java.util.HashMap;
import java.util.Map;/*** 〈一句话功能简述〉<br>* 〈12. 整数转罗马数字〉** @author zhao* @date 2018/11/8 19:35* @since 1.0.1*/
public class Solution012 {/*************************************** 题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符          数值I             1V             5X             10L             50C             100D             500M             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.**************************************//**************************************** 想法:*      1.通过求商-求余获取数据*      自己做一半就去找答案了*** 我的做法*      超过  %的测试案例** 代码执行过程:** 总结:*      没有想到使用循环的方式*      自己做一半就去找答案了* ***********************************/public String intToRoman(int num) {if (num < 1 || num > 3999) {return "";}String result = "";String[] romans = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };int[] nums = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };for (int i = 0; i < romans.length; i++) {int count = num / nums[i];num = num % nums[i];while (count > 0) {result += romans[i];count--;}}return result;}/*************************************** 比我好的答案 better* ***********************************/public String better(int num) {String M[] = { "", "M", "MM", "MMM" };String C[] = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };String X[] = { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };String I[] = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10];}}

大佬们的答案

 /*************************************** 比我好的答案 better* ***********************************/
public String better(int num) {String M[] = { "", "M", "MM", "MMM" };String C[] = { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };String X[] = { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };String I[] = { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10];
}

测试用例

@Test
public void test012() {// 创建测试案例int s1 = 3;int s2 = 2345;// 测试案例期望值String expResult1 = "III";String expResult2 = "MMCCCXLV";// 执行方法Solution012 solution012 = new Solution012();String result1 = solution012.intToRoman(s1);String result2 = solution012.intToRoman(s2);// 判断期望值与实际值Assert.assertEquals(expResult1, result1);Assert.assertEquals(expResult2, result2);}

其他

代码托管码云地址:https://gitee.com/lizhaoandroid/LeetCodeAll.git

查看其他内容可以点击专栏或者我的博客哈:https://blog.csdn.net/cmqwan

“大佬们的答案” 标签来自leetcode,侵权请联系我进行删改

如有疑问请联系,联系方式:QQ3060507060

Leetcode算法Java全解答--12. 整数转罗马数字相关推荐

  1. Leetcode算法Java全解答--41. 缺失的第一个正数

    Leetcode算法Java全解答–41. 缺失的第一个正数 文章目录 Leetcode算法Java全解答--41. 缺失的第一个正数 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 ...

  2. Leetcode算法Java全解答--75. 颜色分类

    Leetcode算法Java全解答–75. 颜色分类 文章目录 Leetcode算法Java全解答--75. 颜色分类 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

  3. Leetcode算法Java全解答--16. 最接近的三数之和

    Leetcode算法Java全解答–16. 最接近的三数之和 文章目录 Leetcode算法Java全解答--16. 最接近的三数之和 题目 想法 结果 总结 代码 我的答案 暴力破解 滑动列表 大佬 ...

  4. Leetcode算法Java全解答--37. 解数独

    Leetcode算法Java全解答–37. 解数独 文章目录 Leetcode算法Java全解答--37. 解数独 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 编写一个 ...

  5. Leetcode算法Java全解答--19. 删除链表的倒数第N个节点

    Leetcode算法Java全解答–19. 删除链表的倒数第N个节点 文章目录 Leetcode算法Java全解答--19. 删除链表的倒数第N个节点 题目 想法 结果 总结 代码 我的答案 大佬们的 ...

  6. Leetcode算法Java全解答--60. 第k个排列

    Leetcode算法Java全解答–60. 第k个排列 文章目录 Leetcode算法Java全解答--60. 第k个排列 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 ...

  7. Leetcode算法Java全解答--73. 矩阵置零

    Leetcode算法Java全解答–73. 矩阵置零 文章目录 Leetcode算法Java全解答--73. 矩阵置零 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 其他 题目 给定 ...

  8. Leetcode算法Java全解答--17. 电话号码的字母组合

    Leetcode算法Java全解答–17. 电话号码的字母组合 文章目录 Leetcode算法Java全解答--17. 电话号码的字母组合 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用 ...

  9. 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 ...

最新文章

  1. C#事件-使用事件需要的步骤
  2. java5引入包装类型的意义_Java中的基本类型和包装类
  3. ASP.NET页面的生命周期
  4. Lua的继承(利用setmetatable)
  5. 【Python CheckiO 题解】Popular Words
  6. STM32 - 定时器高级应用说明 - 多触波的实现 (N-pulse waveform generation using timer synchronization)- 01
  7. (一)phoneGap之环境搭建教程及其example分析
  8. Gtk:利用alignment控制button大小
  9. python hashlib_python hashlib模块
  10. 使用lua实现redis分布式锁
  11. html调用xfplugin,傻瓜式网页里嵌入先锋web万能播放控件
  12. C#毕业设计——基于C#+asp.net+cs的即时通信系统设计与实现(毕业论文+程序源码)——即时通信系统
  13. 色彩设计原理(里面有配色方案,也有配色网站)
  14. Mac更换JDK版本
  15. py thon画一个实心五角星
  16. AcWing 1123 铲雪车
  17. html分享到微博,h5页面分享到微信、朋友圈、新浪微博、QQ空间、QQ好友组件
  18. 软件测试岗位具体是做什么的?
  19. rp_rv1126开发板UVC XU扩展协议功能验证
  20. Chip-seq数据寻找Indel

热门文章

  1. H5创建webApp保存到桌面。
  2. 古文观止卷七_歸去來辭_陶淵明
  3. 让股神“巴菲浆”告诉你接下来的股票市场走势,带好钞票准备起飞!
  4. NUC-ACM/ICPC 寒假训练 简单DP A - G题
  5. windows U盘脱机状态处理方式
  6. “让专业的人做专业的事”,畅捷通的云原生故事
  7. 那些年,我们一起追过的Code......
  8. Java学习基础:搞懂IO
  9. IIS+php环境下:上传文件出现:windows server PHP Warning: mkdir(): Permission denied 解决办法
  10. CentOS 7 搭建 Keepalived+LVS NAT模式 高可用集群