12. Integer to Roman
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000Input: 3
Output: "III"Last updated
Symbol Value
I 1
V 5
X 10
L 50
C 100
D 500
M 1000Input: 3
Output: "III"Last updated
Input: 4
Output: "IV"Input: 9
Output: "IX"Input: 58
Output: "LVIII"
Explanation: L = 50, V = 5, III = 3.Input: 1994
Output: "MCMXCIV"
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.string intToRoman(int num) { // time: O(n); space: O(1)
vector<char> roman{'M', 'D', 'C', 'L', 'X', 'V', 'I'};
vector<int> value{1000, 500, 100, 50, 10, 5, 1};
string res;
for (int i = 0; i < 7; i += 2) {
int d = num / value[i];
if (d < 4) {
for (int j = 0; j < d; ++j)
res += roman[i];
} else if (d == 4) {
res = res + roman[i] + roman[i - 1];
} else if (d > 4 && d < 9) {
res += roman[i - 1];
for (int j = 0; j < d - 5; ++j)
res += roman[i];
} else if (d == 9) {
res = res + roman[i] + roman[i - 2];
}
num %= value[i];
}
return res;
}