翻譯
給定一個整型數值,將其轉換到羅馬數字。
輸入被保證在1到3999之間。
原文
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 result = ;
Type R = typeof(Roman);
foreach (var r in Enum.GetNames(R).Reverse())
{
while (num >= int.Parse(Enum.Format(R, Enum.Parse(R, r), d)))
{
result += r.ToString();
num -= int.Parse(Enum.Format(R, Enum.Parse(R, r), d));
}
}
return result;
}
}
public enum Roman
{
M = 1000,
CM = 900,
D = 500,
CD = 400,
C = 100,
XC = 90,
L = 50,
XL = 40,
X = 10,
IX = 9,
V = 5,
IV = 4,
I = 1
};
今天晚些時候我會將 C# 枚舉的一些用法貼到博客上,不了解的同學敬請關注。
除了枚舉的用法外,我認為這道題中需要你去認真了解這些羅馬數的規則,也就是說記得將9和4這種數也添加到枚舉中哦。
那麼在
搭配
用
切記要加上
如果
最後在
最後返回
好了,到此為止,准備迎接下一題。
下一道題還是關於羅馬數的,不過是從羅馬數轉換成整型數,歡迎大家訪問:傳送門:LeetCode 13 Roman to Integer(羅馬數到整型數) 。