32 lines
836 B
JavaScript
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;
|
|
}
|