每天一题LeetCode【第9天】

T12. Integer to Roman【Medium

题目

给一个整数,将其转换为罗马数字。

输入范围:1~3999

思路

个人觉得这题看代码就好了解法还是很简洁的

① 了解罗马字的规则

② 封装成数组,对应1000,2000,3000,100,200等,每个数组对应十进制 09(间隔1),0090(间隔10),000900(间隔100),00003000(间隔1000,因为最高到3999,所以后面不用了)

代码

代码取自 Top Solution,稍作注释

这代码,还有什么好解释的吗..

public class Solution {
    //因为最大到3999,所以到“MMM”就够了
    String M[] = {"", "M", "MM", "MMM"};
    String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
    String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
    String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
    //巧妙的一一对应
    return M[num/1000] + C[(num%1000)/100]+ X[(num%100)/10] + I[num%10];
}

补充

这里就补充一下罗马字符好啦~主要是方便大家找,下面是链接:

维基百科

百度百科

你可能感兴趣的:(每天一题LeetCode【第9天】)