From 2c3580e8126a7a41b2bfe29d029da865fa717f77 Mon Sep 17 00:00:00 2001 From: Wen <409053122@qq.com> Date: Thu, 17 Aug 2023 15:57:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20[12]=20=E6=95=B4=E6=95=B0=E8=BD=AC?= =?UTF-8?q?=E7=BD=97=E9=A9=AC=E6=95=B0=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/leecode/javascript/12.整数转罗马数字.js | 42 +++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/leecode/javascript/12.整数转罗马数字.js diff --git a/src/leecode/javascript/12.整数转罗马数字.js b/src/leecode/javascript/12.整数转罗马数字.js new file mode 100644 index 0000000..85e4826 --- /dev/null +++ b/src/leecode/javascript/12.整数转罗马数字.js @@ -0,0 +1,42 @@ +/* + * @lc app=leetcode.cn id=12 lang=javascript + * + * [12] 整数转罗马数字 + */ + +// @lc code=start +/** + * @param {number} num + * @return {string} + */ +var intToRoman = function (num) { + const dic = { '1000:1': 'M', '100:1': 'C', '100:5': 'D', '10:1': 'X', '10:5': 'L', '1:1': 'I', '1:5': 'V' }; + let div = 1000, + has, + remain = num; + let ret = ""; + while (remain != 0) { + has = Math.floor(remain / div); + remain = remain % div; + if (has == 0) { + //量级下调 + div /= 10; + continue; + } + if (has < 4) { + ret += dic[`${div}:1`].repeat(has) + } else if (has == 4) { + ret += (dic[`${div}:1`] + dic[`${div}:5`]); + } else if (has < 9) { + ret += dic[`${div}:5`]; + ret += dic[`${div}:1`].repeat(has - 5); + } else { + ret += (dic[`${div}:1`] + dic[`${div * 10}:1`]); + } + div /= 10; + } + return ret; +}; +// console.log("a" + "c".repeat(3)) +console.log(intToRoman(1994)); +// @lc code=end