leetcode 12: Integer to Roman

class Solution {
public:
    string intToRoman(int num) {
        map<int,string> mp;
        mp.insert(make_pair(1,"I"));
        mp.insert(make_pair(2,"II"));
        mp.insert(make_pair(3,"III"));
        mp.insert(make_pair(4,"IV"));
        mp.insert(make_pair(5,"V"));
        mp.insert(make_pair(6,"VI"));
        mp.insert(make_pair(7,"VII"));
        mp.insert(make_pair(8,"VIII"));
        mp.insert(make_pair(9,"IX"));
        mp.insert(make_pair(10,"X"));
        mp.insert(make_pair(20,"XX"));
        mp.insert(make_pair(30,"XXX"));
        mp.insert(make_pair(40,"XL"));
        mp.insert(make_pair(50,"L"));
        mp.insert(make_pair(60,"LX"));
        mp.insert(make_pair(70,"LXX"));
        mp.insert(make_pair(80,"LXXX"));
        mp.insert(make_pair(90,"XC"));
        mp.insert(make_pair(100,"C"));
        mp.insert(make_pair(200,"CC"));
        mp.insert(make_pair(300,"CCC"));
        mp.insert(make_pair(400,"CD"));
        mp.insert(make_pair(500,"D"));
        mp.insert(make_pair(600,"DC"));
        mp.insert(make_pair(700,"DCC"));
        mp.insert(make_pair(800,"DCCC"));
        mp.insert(make_pair(900,"CM"));
        mp.insert(make_pair(1000,"M"));
        mp.insert(make_pair(2000,"MM"));
        mp.insert(make_pair(3000,"MMM"));
        string res;
        int d;
        if(num>=1000)
            d=1000;
        else if(num>=100)
            d=100;
        else if(num>=10)
            d=10;
        else
            d=1;
        while(d>1)
        {
            if(num/d>0)
            {
                res+=mp[num/d*d];
                num-=num/d*d;
            }
            d/=10;
        }
        if(num)
            res+=mp[num];
        return res;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值