12. Integer to Roman
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
题目大意:
将一个给定的阿拉伯数字转换成罗马数字。
思路:
这题看到的时候,想的太多。
其实很简单,将千位,百位,十位,个位都表示出来,然后组合即可。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class
Solution {
public
:
string intToRoman(
int
num) {
string thousands[4] = {
""
,
"M"
,
"MM"
,
"MMM"
};
string hundreds[10] = {
""
,
"C"
,
"CC"
,
"CCC"
,
"CD"
,
"D"
,
"DC"
,
"DCC"
,
"DCCC"
,
"CM"
};
string tens[10] = {
""
,
"X"
,
"XX"
,
"XXX"
,
"XL"
,
"L"
,
"LX"
,
"LXX"
,
"LXXX"
,
"XC"
};
string units[10] = {
""
,
"I"
,
"II"
,
"III"
,
"IV"
,
"V"
,
"VI"
,
"VII"
,
"VIII"
,
"IX"
};
string * hits[4] = {units,tens,hundreds,thousands};
string result;
int
index = 0;
while
(num > 0)
{
result = hits[index][num % 10] + result;
num = num / 10;
index++;
}
return
result;
}
};
|
总结:
有时候题目没有那么难,不要自己搞的很复杂。问题简单化。简单化。。。
本文转自313119992 51CTO博客,原文链接:http://blog.51cto.com/qiaopeng688/1840309