• LeetCode:12. Integer to Roman(Medium)


    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. 代码实现

     1 package com.huiAlex;
     2 
     3 public class IntegerToRoman12 {
     4     public static void main(String[] args) {
     5         System.out.println(IntegerToRoman12.intToRoman(999));
     6     }
     7     public static String intToRoman(int num) {
     8         String M[] = {"", "M", "MM", "MMM"};  // 千位上对应的罗马数字
     9         String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};  // 百位上对应的罗马数字
    10         String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};  // 十位上对应的罗马数字
    11         String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};  // 个位上对应的罗马数字
    12         
    13         return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10];
    14     }
    15 }
  • 相关阅读:
    python之面向对象之类变量和实例变量
    python之面向对象之封装
    python之shutil模块
    利用python实现冒泡排序
    利用python实现二分法和斐波那契序列
    thinkphp input
    从右向左
    全局修改composer源地址
    Git忽略规则及.gitignore规则不生效的解决办法
    mysql主从数据库不同步的2种解决方法 (转载)
  • 原文地址:https://www.cnblogs.com/huiAlex/p/8064493.html
Copyright © 2020-2023  润新知