Skip to content

力扣链接:12.整数转罗马数字

难度:⭐⭐

解题关键词:数组map

解题思路:创建一个值和符号映射的关系表,遍历,如果要找的数字比 value 大,那么用 while 转换,当等于了 0,break,最后返回转换的罗马符号。

typescript
function intToRoman(num: number): string {
  let result = "";

  const valueMap = [
    [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"],
  ];

  for (const [value, symbol] of valueMap) {
    while (num >= +value) {
      num -= +value;
      result += symbol;
    }

    if (num === 0) {
      break;
    }
  }

  return result;
}