LeetCode 12 Integer to Roman(整数からローマ数)
翻訳
テキスト
最初は無数の変数とifを使っていたとは言わないが...
その後、こんなに多くの変数に耐えられずに列挙したので、次は迎刃して解きました.
ローマ数がどのようにカウントされているかを理解するために、ここで図を切りました.具体的には、マイクロソフトBingで検索することができます.
では、コードを先に貼ります.
今日は後でC#列挙の使い方をブログに貼りますので、知らない方はご注目ください.
列挙の使い方に加えて、この問題ではこれらのローマ数のルールをよく理解する必要があると思います.つまり、9と4という数も列挙に追加することを覚えておいてください.
ではIntoRomanでは何をしているのでしょうか. Typeとtypeofを組み合わせてR を新規作成 foreachで列挙中のすべての要素 を遍歴する Reverse()を付けることを覚えておいてください.なぜかというと、つけないでください. numが列挙中の数字より大きい場合、resultに対応する文字列(例えば「M」)を に追加する.最後にnumでさっき使った数字を減らし、数字も列挙することで を取得する.最後にresult に戻る
さあ、ここまでで、次の問題を迎える準備をします.
次の問題はやはりローマ数についてですが、ローマ数から整数数に変換します.転送ゲート:LeetCode 13 Roman to Integer(ローマ数から整数数)へようこそ.
, 。
1 3999 。
テキスト
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
最初は無数の変数とifを使っていたとは言わないが...
その後、こんなに多くの変数に耐えられずに列挙したので、次は迎刃して解きました.
ローマ数がどのようにカウントされているかを理解するために、ここで図を切りました.具体的には、マイクロソフトBingで検索することができます.
では、コードを先に貼ります.
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という数も列挙に追加することを覚えておいてください.
ではIntoRomanでは何をしているのでしょうか.
さあ、ここまでで、次の問題を迎える準備をします.
次の問題はやはりローマ数についてですが、ローマ数から整数数に変換します.転送ゲート:LeetCode 13 Roman to Integer(ローマ数から整数数)へようこそ.