32 lines
836 B
JavaScript

/**
* https://leetcode.cn/problems/integer-to-roman/?envType=study-plan-v2&envId=top-interview-150
* @param {number} num
* @return {string}
*/
const intToRoman = function (num) {
f1(num);
};
const romanMap = [
['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'], // 个位
['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'], // 十位
['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'], // 百位
['', 'M', 'MM', 'MMM'], // 千位
];
/*
把每一个数位上的数字映射成罗马数字,最后拼接即可
*/
function f1(num) {
let result = '';
let place = 0;
while (num > 0) {
result = romanMap[place][num % 10] + result; // 处理当前位的罗马数字
num = Math.floor(num / 10); // 去除当前位
place++; // 处理下一个更高的位
}
return result;
}