Leetcode-Q6

12 Integer to Roman

Description

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

這是進制的轉換

要將十進位進位轉換成羅馬數字

數字的範圍在1~3999

關於羅馬數字的規則

  • 羅馬數字總共會有七個 Ⅰ(1)、Ⅴ(5)、Ⅹ(10)、Ⅼ(50)、Ⅽ(100)、Ⅾ(500)和Ⅿ(1000)

  • 重複數次:一個羅馬數字重複幾次,就表示這個數的幾倍

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const intToRoman = function (num) {
if (num < 1 || num > 3999) {
return '';
}
const lookup = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 };
let romanStr = '';
for (const key in lookup) {
while (num >= lookup[key]) {
romanStr += key;
num -= lookup[key];
}
}
return romanStr;
};

因為有規範在1~3999之間

所以先檢查 num 是否在這個區間

若不在的話則回傳空字串

先用一個物件將羅馬數字設為Key與十進位數字設為Value

準備等等做比對計算

然後使用一個迴圈依序對此物件中的各值去做轉換

在迴圈中加上一個 while 迴圈

當值比較大的時候

代表它可以在轉換一次

所以在romanStr中加上一次符號

num 在扣除相對的value

直到num為零為止

此時romanStr就是相對應的羅馬字串

回傳後就可以解答

文章目录
  1. 1. 12 Integer to Roman
    1. 1.1. Description
    2. 1.2. Example
|