12. Integer to Roman

Leetcode link

题目简介

本题给我们一个参数 num,表示一个 0~3999 的数字

题目要求我们将 num 转换成罗马数字

解题思路

我们只要从大到小遍历罗马数字的值然后将对应的符号放入我们的答案中就可以了

Javascript

/**
 * @param {number} num
 * @return {string}
 */
var intToRoman = function (num) {
    let res = ''

    while (num > 0) {
        switch (true) {
            case num >= 1000:
                res += 'M'
                num -= 1000
                break;
            case num >= 900:
                res += 'CM'
                num -= 900
                break;
            case num >= 500:
                res += 'D'
                num -= 500
                break;
            case num >= 400:
                res += 'CD'
                num -= 400
                break;
            case num >= 100:
                res += 'C'
                num -= 100
                break;
            case num >= 90:
                res += 'XC'
                num -= 90
                break;
            case num >= 50:
                res += 'L'
                num -= 50
                break;
            case num >= 40:
                res += 'XL'
                num -= 40
                break;
            case num >= 10:
                res += 'X'
                num -= 10
                break;
            case num === 9:
                res += 'IX'
                num -= 9
                break;
            case num >= 5:
                res += 'V'
                num -= 5
                break;
            case num === 4:
                res += 'IV'
                num -= 4
                break;
            case num >= 1:
                res += 'I'
                num -= 1
                break;
        }
    }

    return res
};

或者:

/**
 * @param {number} num
 * @return {string}
 */
var intToRoman = function(num) {
    const values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
    const symbols = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];

    let res = ''

    for(let i=0;i<values.length;i++) {
        while(num >= values[i]) {
            res += symbols[i]
            num -= values[i]
        }
    }
    return res
};

results matching ""

    No results matching ""