12. 整数转罗马数字

12. 整数转罗马数字


题目链接:12. 整数转罗马数字

代码如下:

//暴力循环
class Solution {
public:
    unordered_map<int,string> mp;

    Solution()
    {
        mp.insert(pair<int,string>(1,"I"));
        mp.insert(pair<int,string>(4,"IV"));
        mp.insert(pair<int,string>(5,"V"));
        mp.insert(pair<int,string>(9,"IX"));
        mp.insert(pair<int,string>(10,"X"));
        mp.insert(pair<int,string>(40,"XL"));
        mp.insert(pair<int,string>(50,"L"));
        mp.insert(pair<int,string>(90,"XC"));
        mp.insert(pair<int,string>(100,"C"));
        mp.insert(pair<int,string>(400,"CD"));
        mp.insert(pair<int,string>(500,"D"));
        mp.insert(pair<int,string>(900,"CM"));
        mp.insert(pair<int,string>(1000,"M"));
    }

    string intToRoman(int num) {
        string res="";  
        
        //列举所有情况,逐个匹配
        while(num!=0)
        {
            if(num>=1000)
            {
                num-=1000;
                res+=mp[1000];
            }
            else if(num>=900&&num<1000)
            {
                num-=900;
                res+=mp[900];
            }
            else if(num>=500&&num<900)
            {
                num-=500;
                res+=mp[500];
            }
            else if(num>=400&&num<500)
            {
                num-=400;
                res+=mp[400];
            }
            else if(num>=100&&num<400)
            {
                num-=100;
                res+=mp[100];
            }
            else if(num>=90&&num<100)
            {
                num-=90;
                res+=mp[90];
            }
            else if(num>=50&&num<90)
            {
                num-=50;
                res+=mp[50];
            }
            else if(num>=40&&num<50)
            {
                num-=40;
                res+=mp[40];
            }
            else if(num>=10&&num<40)
            {
                num-=10;
                res+=mp[10];
            }
            else if(num>=9&&num<10)
            {
                num-=9;
                res+=mp[9];
            }
            else if(num>=5&&num<9)
            {
                num-=5;
                res+=mp[5];
            }
            else if(num>=4&&num<5)
            {
                num-=4;
                res+=mp[4];
            }
            else
            {
                num-=1;
                res+=mp[1];
            }
        }

        return res;
    }
};

你可能感兴趣的:(leetcode,c++)