Interger To Roman

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

不喜欢写太多的map映射,所以仿照Roman To Integer写了如下。

class Solution {
public:
    string intToRoman(int num) {
        map<int,char> m;
        m[1]='I';
        m[5]='V';
        m[10]='X';
        m[50]='L';
        m[100]='C';
        m[500]='D';
        m[1000]='M';


        string ret="";

        int k=1000;

        while(num)
        {
            int cur=num/k;
            if(cur!=0)
            {
                if(cur==9)
                {
                    ret.push_back(m[k]);
                    ret.push_back(m[k*10]);
                    cur=0;
                }
                else if(cur>=5)
                {
                    ret.push_back(m[5*k]);
                    cur-=5;

                    while(cur)
                    {
                        ret.push_back(m[k]);
                        cur--;
                    }
                }
                else if(cur==4)
                {
                    ret.push_back(m[k]);
                    ret.push_back(m[5*k]);
                    cur-=4;
                }

                while(cur)
                {
                    ret.push_back(m[k]);
                    cur--;
                }
            }
            num%=k;
            k/=10;
        }
        return ret;
    }
};

results matching ""

    No results matching ""