LeetCode 12. Integer to Roman 题解(C++)
题目描述
- Given an integer, convert it to a roman numeral.
- Input is guaranteed to be within the range from 1 to 3999.
思路
- 将1,2,…,9,10,20,…,90,100,200,…,900,1000,2000,3000的整数映射成罗马字符,之后对转换的整数的千位数转换成对应的罗马字符,并放到字符串的末尾,依次将整数的百位,十位,个位转换成罗马字符放到字符串的末尾即可。
代码
class Solution
{
public:
string intToRoman(int num)
{
string s[4][10] = {
{"", "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"}
};
string roman;
roman += s[3][num / 1000];
roman += s[2][(num % 1000) / 100];
roman += s[1][(num % 100) / 10];
roman += s[0][(num % 10)];
return roman;
}
};