zoukankan      html  css  js  c++  java
  • Integer to Roman

    参考:http://www.cnblogs.com/reynold-lei/p/3385290.html

      http://www.cnblogs.com/feiling/p/3302242.html

    罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。

    • 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。
    • 在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。
    • 左减的数字有限制,仅限于I、X、C。比如45不可以写成VL,只能是XLV
    • 但是,左减时不可跨越一个位数。比如,99不可以用IC(100 - 1)表示,而是用XCIX([100 - 10] + [10 - 1])表示。(等同于阿拉伯数字每位数字分别表示。)
    • 左减数字必须为一位,比如8写成VIII,而非IIX。
    • 右加数字不可连续超过三位,比如14写成XIV,而非XIIII。

    所以可能出现的数字只有: 1000(<4) M, 900(<2) CM, 500(<2) D, 400(<2) CD, 100(<4) C, 90(<2) XC, 50(<2) L, 40(<2) XL, 10(<4) X, 9(<2) IX, 5(<2) V, 4(<2) IV, 1(<4) I

    只有M, C, X, I 可能出现多次。从左往右执行,则可得到答案。

    public class Solution {
        public String intToRoman(int num) {
            // IMPORTANT: Please reset any member data you declared, as
            // the same Solution instance will be reused for each test case.
            StringBuffer result = new StringBuffer();
            String[][] mapping = {
                {"", "M", "MM", "MMM", "", "", "", "", "", ""}, // 0 -3000
                {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}, // 100 - 900
                {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}, // 10 -90
                {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"} // 0- 9   
             };
             int scale = 1000;
             int i = 0;
             while(num > 0){
                 int digit = num / scale;
                 result.append(mapping[i++][digit]);
                 num = num % scale;
                 scale /= 10;
             }
             return result.toString();
            
        }
    }
  • 相关阅读:
    Hoeffding Inequality 证明过程
    机器学习-1
    Java多线程安全问题的解决方式
    List<? extends T>和List<? super T>之间的区别
    关于禁用cookie后无法使用session的解决方案
    class.forName和classloader的区别
    在Js中使程序睡眠的sleep方法
    Java到底是值传递还是引用传递?
    Thymeleaf 绝对路径
    jdk1.8 Unsafe类 park和unpark方法解析
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3533074.html
Copyright © 2011-2022 走看看