leetcode做题总结,题目Integer to Roman 2012/01/15

本文介绍了一种解决LeetCode上罗马数字转换问题的方法。通过将整数按位拆分,并将每位数字映射为相应的罗马数字字符,最终组合成完整的罗马数字字符串。文章详细展示了如何使用队列存储每位数字,并逐步构建出正确答案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现一个问题,人家是leetcode被我一直写成了leedcode。。。以后的文章改成正确的。

下面说这一题,罗马数字需要在网上查一下,我用的方法是把每位数字存起来,然后把每一位转化成罗马数字的字符串然后连接起来即可,一开始没注意题目,用了队列因为可变长度,后来发现范围是1-3999,其实可以把队列改为长度为4的数组即可。


public String intToRoman(int num) {
        Queue<Integer> q = new LinkedList<Integer>();
        int ji=1;
        while(num!=0){
            int n = (int)(num%Math.pow(10,ji));
            num=num-n;
            n=(int)(n/Math.pow(10,ji-1));
            q.offer(n);
            ji++;
        }
        int we=1;
        String s="";
        while(!q.isEmpty()){
            if(we==1){
                int a=q.poll();
                if(a==1) s="I";
                else if(a==2) s="II";
                else if(a==3) s="III";
                else if(a==4) s="IV";
                else if(a==5) s="V";
                else if(a==6) s="VI";
                else if(a==7) s="VII";
                else if(a==8) s="VIII";
                else if(a==9) s="IX";
            }
 if(we==2){
                int a=q.poll();
                if(a==1) s="X"+s;
                else if(a==2) s="XX"+s;
                else if(a==3) s="XXX"+s;
                else if(a==4) s="XL"+s;
                else if(a==5) s="L"+s;
                else if(a==6) s="LX"+s;
                else if(a==7) s="LXX"+s;
                else if(a==8) s="LXXX"+s;
                else if(a==9) s="XC"+s;
            }
            if(we==3){
                int a=q.poll();
                if(a==1) s="C"+s;
                else if(a==2) s="CC"+s;
                else if(a==3) s="CCC"+s;
                else if(a==4) s="CD"+s;
                else if(a==5) s="D"+s;
                else if(a==6) s="DC"+s;
                else if(a==7) s="DCC"+s;
                else if(a==8) s="DCCC"+s;
                else if(a==9) s="CM"+s;
            }
            if(we==4){
                int a=q.poll();
                if(a==1) s="M"+s;
                else if(a==2) s="MM"+s;
                else s="MMM"+s;
            }
            we++;
        }
        return s;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值