思路
一共有7+6种组合,分别为:[1000, “M”], [900, “CM”],[500, “D”],[400, “CD”],[100, “C”],[90, “XC”],[50, “L”],[40, “XL”],[10, “X”],[9, “IX”],[5, “V”],[4, “IV”],[1, “I”]
从最大的开始不断做除法。商值为要加入该字符串的次数,余数作为下一次的被除数。
代码
/**
* @param {number} num
* @return {string}
*/
var intToRoman = function(num) {
var relation = [
[1000, "M"],
[900, "CM"],
[500, "D"],
[400, "CD"],
[100, "C"],
[90, "XC"],
[50, "L"],
[40, "XL"],
[10, "X"],
[9, "IX"],
[5, "V"],
[4, "IV"],
[1, "I"]
];
var s = '';
var i = 0;
while (num && i < relation.length) {
let a = Math.floor(num / relation[i][0]); //商
let b = num % relation[i][0]; //余数
for (let j = 0; j < a; j++) {
s += relation[i][1];
}
num = b;
i++;
}
return s;
};