题目
罗马数字包含以下七种数字:I(1), V(5), X(10), L(50), C(100), D(500), M(1000);
那么除了这七种数值可以直接表示外,其他的数值是怎么表示的呢?例如:
数值2: II (两个 I 并列);同理,数字3也一样是三个并列
数字7: VII(一个 V 和两个 I 并列)
数值20: XX (两个 X 并列);同理,数字30也一样是三个并列
数值200:CCC(三个 C 并列);同理,数字3000也一样是三个并列
通常情况下,罗马数字中小的数字放在大的数字右边,即组成一个相加的整数值;但是也有特例,如 4、9、40、90、400、900;并且特殊的规则只有这 6 种情况:
I
可以放在V(5)
和X(10)
的左边,即表示IV(4)
和IX(9)
X
可以放在L(50)
和C(100)
的左边,即表示XL(40)
和XC(90)
C
可以放在D(500)
和M(1000)
的左边,即表示CD(400)
和CM(900)
那么,在满足以上条件的情况下,给定一个整数,将其抓换成罗马数字;并保证数字在 [1 - 3999] 内。
示例1
1 | 输入:3 |
示例2
1 | 输入:59 |
示例3
1 | 输入:1993 |
CODE
通过前面的示例及对罗马数字的理解,在进行转换的途中,可以将数字分为个、十、百、千四个位数来进行处理,分别将其对应成各自组别的数字;即:
1 | function initNumToRoman(num) { |
总结
从整数数字转罗马数字的过程中看出,需要对罗马数字有一个具体的了解,并且罗马数字除了正常的由7种字符表示外,还有6种特殊的规则表示6个对应的特殊数字,其他的都按照规则依次处理即可;最后将数字从千、百、十、个位进行数字计算处理得到最终的结果。