您的位置:首页 > 其它

leetcode 12. Integer to Roman

2016-02-23 14:26 344 查看

题意

将整数转换为罗马数字。

题解

数字对应的罗马数字为:

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: