👋
13. Roman to Integer
ローマ数字は7つの異なる記号で表されます:I、V、X、L、C、D、M。
| 記号 | 値 |
|------|----|
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100|
| D | 500|
| M | 1000|
例えば:
- 数字 2 はローマ数字で II と書きます。これは「1」が2つ足されたものです。
- 数字 12 は XII と書きます。これは X (10) + II (2) の合計です。
- 数字 27 は XXVII と書きます。これは XX (20) + V (5) + II (2) の合計です。
ローマ数字は通常、大きい数字から小さい数字の順に左から右へ書かれます。しかし、4 の場合は IIII ではなく IV と書きます。これは「1 (I)」が「5 (V)」の前にあるため、5から1を引いて4になります。同じルールが9 (IX) にも適用されます。
減算が使われる主な6つのパターン:
- I は V (5) や X (10) の前に置かれて 4 または 9 を表します。
- X は L (50) や C (100) の前に置かれて 40 または 90 を表します。
- C は D (500) や M (1000) の前に置かれて 400 または 900 を表します。
---
ローマ数字を整数に変換する
例1
入力: s = "III"
出力: 3
説明: III = 3
例2
入力: s = "LVIII"
出力: 58
説明: L = 50, V = 5, III = 3
例3
入力: s = "MCMXCIV"
出力: 1994
説明:
- M = 1000
- CM = 900
- XC = 90
- IV = 4
・減算処理の条件は「現在の値 < 次の値」で判断。
・次の文字がない場合は $next を 0 として扱うことで安全に処理。
・計算結果は $sum に格納し、最終的に返却。
Discussion