题目:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
题意:
给定一个数字,转化为罗马数字。
思路:
我们先打表,将个十百千位上整数对应的罗马数字打出。然后每一位只要从表中取就行了。
代码如下:
class Solution {
public:
string intToRoman(int num) {
string table[30] = {"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"
};
int temp = num;
int count = 0;
while(temp > 0) {
count++;
temp /= 10;
}
int high = pow(10, count - 1);
string result = "";
while(num > 0) {
int index = num / high;
result = (index > 0)?result + table[(count - 1)*9 + index - 1]:result;
num %= high;
high /= 10;
count--;
}
return result;
}
};