Given an integer, convert it to a roman numeral.

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

题意就是把十进制的数据转化为罗马数字,由于我对罗马数字的表示不太清楚,所以网上就参考了一个答案,不过类似的思路肯定是把数字拆分,然后转化。

代码如下:

public class Solution 
{
    public String intToRoman(int num)
    {
        String[][] roman =
        {
            {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
            {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
            {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
            {"", "M", "MM", "MMM"}
        };

        String ret = "";
        int digit = 0;
        while (num != 0) {
            int remain = num % 10;
            ret = roman[digit][remain] + ret;
            digit++;
            num /= 10;
        }

        return ret;
    }
}

下面是C++的做法,

代码如下:

#include <iostream>
#include <string>

using namespace std;

class Solution 
{
public:
    string intToRoman(int num) 
    {
        string roman[4][10] =
        {
            { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" },
            { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" },
            { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" },
            { "", "M", "MM", "MMM" }
        };

        string res = "";
        int digits = 0;
        while (num > 0)
        {
            int remain = num % 10;
            res = roman[digits][remain] + res;
            digits++;
            num /= 10;
        }
        return res;
    }
};