Leetcode 13. Integer To Roman(整数转罗马数字)

Leetcode 13. Integer To Roman

难度等级:中等

题目描述

13. Roman to Integer

思路

罗马数字和阿拉伯数字对应关系如下:

字符          数值
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;
}
posted @ 2022-01-11 20:15  Dre_am_tale  阅读(28)  评论(0编辑  收藏  举报