Leetcode初学——整数转罗马数字

 

题目:

这道题其实和我之前的一篇文章——罗马数字转整数,有异曲同工之处,如果没有做过的同学,建议先看罗马数字转整数,

附上我的博文链接https://blog.csdn.net/qq_39377543/article/details/104032764

 

对于这道题,我们必须要先明确一点,我们要从大往小了走,想明白这一点后,解决这道题也就不是什么难事了

class Solution {
    public String intToRoman(int num) {
        StringBuilder stringBuilder = new StringBuilder();
        //定义一个LinkedHashMap,注意是LinkedHashMap!
        //LinkedHashMap的Key是有序的,是按照你的存储顺序排列的
        Map<Integer,String> map=new LinkedHashMap<Integer, String>() {{
            put(1000,"M");
            put(900,"CM");
            put(500,"D");
            put(400,"CD");
            put(100,"C");
            put(90,"XC");
            put(50,"L");
            put(40,"XL");
            put(10,"X");
            put(9,"IX");
            put(5,"V");
            put(4,"IV");
            put(1,"I");
        }};
        //遍历每一个Key,直到num=0为止
        for(int i:map.keySet()){
            while(num>=i) {
                num-=i;
                stringBuilder.append(map.get(i));
            }
            if(num==0) break;
        }
        return stringBuilder.toString();
    }
}

运行结果如下:

不知道为什么,明明很简单的代码,最后运行效率却极低,也许是Map的原因?如果有大牛知道的话,可以在评论里告诉我,谢谢
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值