Leetcode 13. Integer To Roman(整数转罗马数字)
难度等级:中等
思路
罗马数字和阿拉伯数字对应关系如下:
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
一般来说,罗马数字中小的位于大的右边。
即将一个罗马数字从左到右相加能得到对应的数字。
存在特殊情况
字符 数值
IV 4
IX 9
XL 40
XC 90
CD 400
CM 900
上面这些是左小右大,将右边的剪去左边可得到阿拉伯数字。
可以写一个循环,数字大的优先匹配,将特殊情况的数字字符作为整体。
代码如下:
String Solution(int num) {
String str = "";
int key[] = new int[] { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
String value[] = new String[] { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
int i = 0;
while (num != 0) {
if (num >= key[i]) {
str += value[i];
num -= key[i];
i = 0;
} else
i++;
}
return str;
}