2017年6月24日 星期六

leetcode-12 Integer to Roman

題意:將整數轉為羅馬表示法

解題思路: 須先了解羅馬表示法規則,可參閱Roman numerals ,接著照規則寫,即所求,複雜度O(1)

C++ code如下:


class Solution {
public:
    string intToRoman(int num) {
        string ans="";
        for(int i=1;i<=num/1000;i++)
            ans=ans+'M';
        num=num%1000;
        if(num/100>=5)
        {
            if(num/100==9)
                ans=ans+"CM";
            else
            {
                ans=ans+'D';
                for(int i=1;i<=num/100-5;i++)
                    ans=ans+'C';
            }
        }
        else
        {
            if(num/100==4)
                ans=ans+"CD";
            else
            {
                for(int i=1;i<=num/100;i++)
                    ans=ans+'C';
            }
        }
        num=num%100;
        if(num/10>=5)
        {
            if(num/10==9)
                ans=ans+"XC";
            else
            {
                ans=ans+'L';
                for(int i=1;i<=num/10-5;i++)
                    ans=ans+'X';
            }
        }
        else
        {
            if(num/10==4)
                ans=ans+"XL";
            else
            {
                for(int i=1;i<=num/10;i++)
                    ans=ans+'X';
            }
        }
        num=num%10;
        if(num>=5)
        {
            if(num==9)
                ans=ans+"IX";
            else
            {
                ans=ans+'V';
                for(int i=1;i<=num-5;i++)
                    ans=ans+'I';
            }
        }
        else
        {
            if(num==4)
                ans=ans+"IV";
            else
            {
                for(int i=1;i<=num;i++)
                    ans=ans+'I';
            }
        }
        return ans;
    }
};

沒有留言:

張貼留言