/** * 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; }