Leecode刷题之路第12天之整数转罗马数字

Scroll Down

题目出处

12-整数转罗马数字-题目出处

题目描述

12-整数转罗马数字-题目描述1
12-整数转罗马数字-题目描述2

个人解法

思路:

todo

代码示例:(Java)

todo

复杂度分析

todo

官方解法

12-整数转罗马数字-官方解法

12-整数转罗马数字-前言1
12-整数转罗马数字-前言2

方法1:模拟

思路:

12-整数转罗马数字-模拟

代码示例:(Java)

int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
    String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

    public String intToRoman(int num) {
        StringBuffer roman = new StringBuffer();
        for (int i = 0; i < values.length; ++i) {
            int value = values[i];
            String symbol = symbols[i];
            while (num >= value) {
                num -= value;
                roman.append(symbol);
            }
            if (num == 0) {
                break;
            }
        }
        return roman.toString();
    }

复杂度分析

12-整数转罗马数字-复杂度分析

方法2:硬编码数字

思路:

12-整数转罗马数字-硬编码数字
12-整数转罗马数字-硬编码数字1

代码示例:(Java)

String[] thousands = {"", "M", "MM", "MMM"};
    String[] hundreds = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
    String[] tens = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
    String[] ones = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};

    public String intToRoman(int num) {
        StringBuffer roman = new StringBuffer();
        roman.append(thousands[num / 1000]);
        roman.append(hundreds[num % 1000 / 100]);
        roman.append(tens[num % 100 / 10]);
        roman.append(ones[num % 10]);
        return roman.toString();
    }

复杂度分析

12-整数转罗马数字-复杂度分析2

考察知识点

1.罗马数字

收获

Gitee源码位置

12-整数转罗马数字-源码

同名文章,已同步发表于CSDN,个人网站,公众号