トピック:
ローマ数字には、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;
};