leetcode刷题之12

public String intToRoman(int num) {
        Map<Integer, Character> map = new HashMap<>();
        map.put(1, 'I');
        map.put(5, 'V');
        map.put(10, 'X');
        map.put(50, 'L');
        map.put(100, 'C');
        map.put(500, 'D');
        map.put(1000, 'M');
        String result = "";
        String s = String.valueOf(num);
        int l = s.length();
        int key = 0;
        char value = 'I';
        char value2 = 'I';
        for (int i = 0; i < l; i++) {
            char c = s.charAt(i);
            key = (int) Math.pow(10, l - 1 - i);
            if(map.containsKey(5*key)) {
                value2 = map.get(5 * key);
            }
            value = map.get(key);
            switch (c) {
                case '1':
                    result = result + value;
                    break;
                case '2':
                    result = result + value + value;
                    break;
                case '3':
                    result = result + value + value + value;
                    break;
                case '4':
                    result = result + value + value2;
                    break;
                case '5':
                    result = result + value2;
                    break;
                case '6':
                    result = result + value2 + value;
                    break;
                case '7':
                    result = result + value2 + value + value;
                    break;
                case '8':
                    result = result + value2 + value + value + value;
                    break;
                case '9':
                    value2 = map.get(key*10);
                    result = result + value + value2;
                    break;
            }
        }
        return result;
    }

后记:java容器真的是给编程带来了极大的方便,很多数据结构都不需要自己构建,直接利用已有的即可。如果用C/C++实现,估计需要AC很多次才能通过吧。

转载于:https://my.oschina.net/u/3744368/blog/1818615

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值