数字转罗马数字
...小于 1 分钟
罗马数字由 777 个不同的单字母符号组成,每个符号对应一个具体的数值。此外,减法规则(如问题描述中所述)给出了额外的 666 个复合符号。这给了我们总共 131313 个独特的符号(每个符号由 111 个或 222 个字母组成),如下图所示。
我们用来确定罗马数字的规则是:对于罗马数字从左到右的每一位,选择尽可能大的符号值。对于 140,最大可以选择的符号值为 C=100。接下来,对于剩余的数字 140,最大可以选择的符号值为 XL=40。因此,140 的对应的罗马数字为 C+XL=CXL。
var intToRoman = function (num) {
const valueSymbols = [
[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"],
];
const roman = [];
for (const [value, symbol] of valueSymbols) {
while (num >= value) {
num -= value;
roman.push(symbol);
}
if (num == 0) {
break;
}
}
return roman.join("");
};
赞助