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;
}
};