(Js)Leetcode12。整数からローマ数字

トピック:

ローマ数字には、I、V、X、L、C、D、Mの7文字が含まれています。

文字値
I 1
V 5
X 10
L 50
C 100
500 D
M 1000は、
たとえば、ローマ数字2は、二つの平行なものを意味II、として書かれている。図12に示すように、XIIのように記述される手段X + IIを。27はXXVII、つまりXX + V + IIと表記されます。

通常、ローマ数字の小さい数字は大きい数字の右側にあります。ただし、特殊なケースがあります。たとえば、4はIIIIとしてではなく、IVとして記述されます。番号1は番号5の左側にあり、表されている番号は、大きい番号5から番号1を引いた番号4と同じです。同様に、番号9はIXとして表されます。この特別なルールは、次の6つの状況にのみ適用されます。

V(5)とX(10)の左側に配置して、4と9を表すことができます。
XはL(50)とC(100)の左側に配置して、40と90を表すことができます。 
CはD(500)とM(1000)の左側に配置して、400と900を表すことができます。
整数が与えられたら、それをローマ数字に変換します。入力が1〜3999の範囲にあることを確認してください。

例1:

入力:3
出力:「III」
例2:

入力:4
出力: "IV"
例3:

入力:9
出力: "IX"
例4:

入力:58
出力: "LVIII"
説明:L = 50、V = 5、III = 3。
例5:

入力:1994
出力: "MCMXCIV"
説明:M = 1000、CM = 900、XC = 90、IV = 4。

促す:

1 <= num <= 3999

アイデア:

大きいものから小さいものへ

コード:

/**
 * @param {number} num
 * @return {string}
 */
var intToRoman = function(num) {
    let keys = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
    let values = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];
    let res = '';
    for(let i = 0; i < keys.length; i++) {
        while(num >= keys[i]) {
            num -= keys[i];
            res += values[i];
        }
    }
    return res;
};

演算結果:

おすすめ

転載: blog.csdn.net/M_Eve/article/details/113746097