Leecode 12. 整数转罗马数字 模拟

原题链接:Leecode 12. 整数转罗马数字
在这里插入图片描述
在这里插入图片描述
代码一:

class Solution {
public:
    string s;
    void fun(int num)
    {
        while(num)
        {
            if(num>=1000)
            {
                s+="M";num-=1000;
            }
            else if(num>=900)
            {
                s+="CM";num-=900;
            }
            else if(num>=500)
            {
                 s+="D";num-=500;
            }
            else if(num>=400)
            {
                 s+="CD";num-=400;
            }
            else if(num>=100)
            {
                 s+="C";num-=100;
            }
            else if(num>=90)
            {
                 s+="XC";num-=90;
            }
            else if(num>=50)
            {
                 s+="L";num-=50;
            }
            else if(num>=40)
            {
                 s+="XL";num-=40;
            }
            else if(num>=10)
            {
                 s+="X";num-=10;
            }
            else if(num>=9)
            {
                 s+="IX";num-=9;
            }
            else if(num>=5)
            {
                 s+="V";num-=5;
            }
            else if(num>=4)
            {
                 s+="IV";num-=4;
            }
            else if(num>=1)
            {
                 s+="I";num-=1;
            }
        }
    }
    string intToRoman(int num) {
        fun(num);
        return s;
        
    }
};

代码二:

class Solution {
public:
    string intToRoman(int num) {
        string s;
        int n[13]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
        string str[13]={"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
        for(int i=0;i<13;i++)
        {
            while(num>=n[i])
            {
                num-=n[i];
                s+=str[i];
            }
            if(!num)
                break;
        }
        return s;
    }
};

代码三:

class Solution {
public:
    string intToRoman(int num) {
        string s1[]={"","M","MM","MMM"};
        string s2[]={"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
        string s3[]={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
        string s4[]={"","I","II","III","IV","V","VI","VII","VIII","IX"};
        return s1[num/1000]+s2[num%1000/100]+s3[num%100/10]+s4[num%10];
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值