只需要建立一个大表格,分别对应1-9的罗马数字,10-90的罗马数字,100-900的罗马数字,1000-3000的罗马数字(题目规定最大数字为3999)。然后取出整数千百十个位上的数字作为下标映射到对应的罗马数字即可。
class Solution {
public:
string intToRoman(int num) {
string I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
string X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
string C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
string M[] = {"", "M", "MM", "MMM"};
return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10];
}
};
class Solution(object):
def intToRoman(self, num):
I = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
X = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
C = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
M = ["", "M", "MM", "MMM"];
return M[num // 1000] + C[(num % 1000) // 100] + X[(num % 100) // 10] + I[num % 10];
class Solution:
def intToRoman(self, num: int) -> str:
I = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
X = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
C = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
M = ["", "M", "MM", "MMM"];
return M[num // 1000] + C[(num % 1000) // 100] + X[(num % 100) // 10] + I[num % 10];