1. 原题链接

https://leetcode.com/problems/integer-to-roman/description/

2. 题目要求

(1) 将整数转换成罗马数字; (2) 整数的范围1-3999

3. 关于罗马数字

(1)对应整数

罗马数字 I V X L C D M
对应整数 1 5 10 50 100 500 1000

(2)罗马数字的书写规则

  • 相同的数字连写, 所表示的数等于这些数字相加得到的数。如 XXX表示 30
  • 小的数字在大的数字的右边, 所表示的数等于这些数字相加得到的数 如VIII 表示8
  • 小的数字(限于I, X, C)在大的数字的左边, 所表示的数等于大数减去小的数: 如IV 表示4
  • 在一个数的上面画一条横线, 表示这个数增值1000倍(由于题目只考虑4000以内的数,所以这条规则不用考虑)。

(3)罗马数字的组合规则

  • I, X, C: 最多只能连用3个, 如果放在大数的左边,只能用1个。
  • V, L, D: 不能放在大数的左边,只能使用一个。
  • I 只能用在V和X的左边。 IV表示4, IX表示9
  • X只能放在L,C左边。 XL 表示40, XC表示90
  • C放在左边时只能用在D, M左边。 CD 表示400, CM表示900

4. 解题思路

(1)找出所给整数每一位上对应的罗马数字。例如给出整数2307,千位上为2,2000对应罗马数字MM;百位上为3,300对应罗马数字CCC;个位上为7,7对应的罗马数字为VII,故可的2307对应的罗马数字为MMCCCVII。

(2)于是我们要列出不同位上、不同数字对应的罗马数字:

千位上的数字 0 1 2 3
对应罗马数字   M MM MMM
百位上的数字 0 1 2 3 4 5 6 7 8 9
对应罗马数字   C CC CCC CD D DC DCC DCCC CM
十位上的数字 0 1 2 3 4 5 6 7 8 9
对应罗马数字   X XX XXX XL L LX LXX LXXX XC
个位上的数字 0 1 2 3 4 5 6 7 8 9
对应罗马数字   I II III IV V VI VII VIII IX

5. 代码实现

 package com.huiAlex;

 public class IntegerToRoman12 {
public static void main(String[] args) {
System.out.println(IntegerToRoman12.intToRoman(999));
}
public static String intToRoman(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];
}
}

LeetCode:12. Integer to Roman(Medium)的更多相关文章

  1. LeetCode:40. Combination Sum II(Medium)

    1. 原题链接 https://leetcode.com/problems/combination-sum-ii/description/ 2. 题目要求 给定一个整型数组candidates[ ]和 ...

  2. LeetCode:5. Longest Palindromic Substring(Medium)

    原题链接:https://leetcode.com/problems/longest-palindromic-substring/description/ 1. 题目要求:找出字符串中的最大回文子串 ...

  3. Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用-um

    ylbtech-Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用 1.返回顶部 1. Java 实例 - Enum(枚举)构造函数及方法的 ...

  4. 【一天一道LeetCode】#12 Integer to Roman

    一天一道LeetCode系列 (一)题目 Given an integer, convert it to a roman numeral. Input is guaranteed to be with ...

  5. 《LeetBook》leetcode题解(12):Integer to Roman[M]

    我现在在做一个叫<leetbook>的免费开源书项目,力求提供最易懂的中文思路,目前把解题思路都同步更新到gitbook上了,需要的同学可以去看看 书的地址:https://hk029.g ...

  6. 【LeetCode】12. Integer to Roman (2 solutions)

    Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...

  7. Windows Phone本地数据库(SQLCE):12、插入数据(翻译)

    这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十二篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...

  8. LeetCode:14. Longest Commen Prefix(Easy)

    1. 原题链接 https://leetcode.com/problems/longest-common-prefix/description/ 2. 题目要求 给定一个字符串数组,让你求出该数组中所 ...

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

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

随机推荐

  1. 第二次scrum冲击

    1.小组第二次冲刺任务及其完成情况描述. 本次冲刺我们小组经过讨论,实现的使我们爱上长大系统中的失物招领功能,由于在实际的实现中,对于本功能的逐渐深入和了解,渐渐发现这个功能实现起来需要由很多部分组成 ...

  2. BZOJ2730:[HNOI2012]矿场搭建(双连通分量)

    Description 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一 ...

  3. 计算次数,POJ(1207)

    题目链接:http://poj.org/problem?id=1207 #include <stdio.h> #include <algorithm> using namesp ...

  4. PowerShell批量创建文件夹

    效果如下: 实现关键: mkdir (1..10|%{"hwllo$_"}) 过程概述:

  5. SPFA 全面讲解

    SPFA全面讲解 --最短路高效算法 标签: 最短路 简介:SPFA 是1994年在西安交通大学段凡丁同学所提出,是将Dijsktra以及Bellman-Ford两种最短路算法完美结合的一个算法,效率 ...

  6. PAT1067. Sort with Swap(0, *) (25) 并查集

    PAT1067. Sort with Swap(0, *) (25) 并查集 题目大意 给定一个序列, 只能进行一种操作: 任一元素与 0 交换位置, 问最少需要多少次交换. 思路 最优解就是每次 0 ...

  7. 网页静态化技术Freemarker

    1.为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息 ...

  8. wordpress二次开发第一个jquery对比

    $(document).ready(function(){ $("input").focus(function(){ $("input").css(" ...

  9. 数据库——MySQL——完整性约束

    约束,就是用来保证数据完整性和一致性的. 常见的约束分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NO ...

  10. [Oracle]分区索引

    上一节学习了分区表,接着学习分区索引. (一)什么时候对索引进行分区 · 为了避免移动数据时重建整个索引,可对索引分区,在重建索引时,只需重建与数据分区相关的索引: · 在对分区表进行维护时,为了避免 ...