Integer to Roman
Roman numerals are represented by seven different symbols: I
, V
, X
, L
, C
, D
and M
.
Symbol | Value |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
For example, 2
is written as II
in Roman numeral, just two one’s added together. 12
is written as XII
, which is simply X + II
. The number 27
is written as XXVII
, is written as XXVII
, which is XX + V + II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII
. Instead, the number four is written as IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX
. There are six instances where subtraction is used.
I
can be placed beforeV
(5) andX
(10) to make 4 and 9.X
can be placed beforeL
(50) andC
(100) to make 40 and 90.C
can be placed beforeD
(500) andM
(1000) to make 400 and 900.
Given an integer, convert it to a roman numeral.
Example 1:
- Input: num = 3
- Output: “III”
- Explanation: 3 is represented as 3 ones.
Example 2:
- Input: num = 58
- Output: “LVIII”
- Explanation: L = 50, V = 5, III = 3
Example 3:
- Input: num = 1994
- Output: “MCMXCIV”
- Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
Constraints:
- $1 \le num \le 3999$
Solution
- Objective: Convert integers to Roman numerals.
- Roman Numeral Symbols: I(1), V(5), X(10), L(50), C(100), D(500), M(1000)
Conversion Rules
- Mostly written in descending order from larger to smaller values.
- Specific combinations where a smaller value precedes a larger value imply subtraction(e.g., IV = 4, IX = 9)
Implementation Method
- Value and Symbol Mapping: Store the numbers and corresponding Roman numeral symbols in arrays.
- Conversion Process:
- Start with the given integer.
- If the integer is greater than or equal to the current Roman numeral value, append the symbol to the result and subtract the value.
- Repeat for all Roman numeral values.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
string intToRoman(int num) {
// Arrays to store the values corresponding to Roman numerals
vector<int> values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
vector<string> symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
// String to store the resulting Roman numeral
string roman = "";
// Convert the given number to a Roman numeral
for(int i = 0; i < values.size() && num > 0; i++) {
// Check how many times the current value can represent the number
while(num >= values[i]) {
num -= values[i]; // Substract the value from num
roman += symbols[i]; // Add the corresponding Roman Numeral to the result
}
return roman;
}
}
}
This post is licensed under CC BY 4.0 by the author.