C++
class Solution {
public:
string intToRoman(int num) {
int values[] = {
1000,
900, 500, 400, 100,
90, 50, 40, 10,
9, 5, 4, 1
};
string reps[] = {
"M",
"CM", "D", "CD", "C",
"XC", "L", "XL", "X",
"IX", "V", "IV", "I"
};
string res;
for (int i = 0; i < 13; i++) {
while (num >= values[i]) {
num -= values[i];
res += reps[i];
}
}
return res;
}
};
Python3
class Solution:
def intToRoman(self, num: int) -> str:
dic = OrderedDict({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'})
res = ""
for i in dic:
res += (num // i) * dic[i]
num %= i
return res
Go
func intToRoman(num int) string {
values := []int {
1000,
900, 500, 400, 100,
90, 50, 40, 10,
9, 5, 4, 1,
}
reps := []string {
"M",
"CM", "D", "CD", "C",
"XC", "L", "XL", "X",
"IX", "V", "IV", "I",
}
res := ""
for i := 0; i < 13; i++ {
for num >= values[i] {
res += reps[i]
num -= values[i]
}
}
return res
}