题意
将整数转换为罗马数字。
题解
数字对应的罗马数字为:
1~9: {“I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”},
10~90: {“X”, “XX”, “XXX”, “XL”, “L”, “LX”, “LXX”, “LXXX”, “XC”},
100~900: {“C”, “CC”, “CCC”, “CD”, “D”, “DC”, “DCC”, “DCCC”, “CM”},
1000~3000: {“M”, “MM”, “MMM”}
代码
class Solution {
public:
string intToRoman(int num) {
string roman[][9] = {
{"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
{"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
{"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
{"M", "MM", "MMM"}
};
if(num > 3999 || num <= 0)
return NULL;
string num_str[4];
int i = 0;
while(num > 0)
{
if(num % 10 > 0)
num_str[i] = roman[i][num % 10 - 1];
i++;
num /= 10;
}
string result;
for(int j = i - 1; j >= 0; j--) //reverse string
{
result += num_str[j];
}
return result;
}
};