418.Integer to Roman-整数转罗马数字(中等题)

整数转罗马数字

  1. 题目

    给定一个整数,将其转换成罗马数字。
    返回的结果要求在1-3999的范围内。

  2. 说明

    什么是 罗马数字?
    https://en.wikipedia.org/wiki/Roman_numerals
    https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
    http://baike.baidu.com/view/42061.htm

  3. 样例

    4 -> IV
    12 -> XII
    21 -> XXI
    99 -> XCIX
    更多案例,请戳 http://literacy.kent.edu/Minigrants/Cinci/romanchart.htm

  4. 题解

    把1-9个1,1-9个10,1-9个100和1-3个1000准备好,后直接查表即可。

public class Solution {
    /**
     * @param n The integer
     * @return Roman representation
     */
    public String intToRoman(int n) {
        String roman[][]={
            {"","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"}
        };
        StringBuilder res = new StringBuilder();
        res.append(roman[3][n / 1000 % 10]);
        res.append(roman[2][n / 100 % 10]);
        res.append(roman[1][n / 10 % 10]);
        res.append(roman[0][n % 10]);
        return res.toString();
    }
}

Last Update 2016.11.17

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值