- 整数困難にローマ数字822は、単に次の7つの文字、ローマ数字が含ま:I、V、X、L、C、D及びM.
数字
I. 1
V. 5
X-10
L 50
C 100
D 500
M 1000年
例えば、ローマ数字2 IIのように書く、X + IIである二つの平行1.12 XII、として書かなければなりません。図27は、XXVII、即ちXX + V + IIのように書きます。
一般的に、大量に右にローマ数字の数が少ないです。しかし、例外もある、例えば、4 IIIIを書きますが、IVはありません。左番号5番号1において、多数の数が4を得た少ない数5で表される値に等しいです。同様に、数9は、IXで表されます。この特別なルールは以下の6つのケースにのみ適用されます。
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
整数に変換するために、ローマ数字を考えます。入力は3999から1の範囲にあることを保証します。
例1:
入力: "III"
出力:3
例2:
入力: "IV"
出力:4
例3:
入力: "IX"
出力:9
例4:
入力: "LVIII"
出力:58
説明:L = 50、V = 5 、III = 3。
例5:
入力: "MCMXCIV"
出力:1994
説明:= 1000 M、CM = 900 、XC = 90、IV = 4
265205回161549回から提出されました
辞書暴力行為
ハッシュテーブルに対処するための不便、辞書は非常に良いです
public class Solution
{
public int RomanToInt(string s)
{
Dictionary<string,int> dc = new Dictionary<string,int>();
dc.Add("I",1);
dc.Add("IV",4);
dc.Add("IX",9);
dc.Add("V",5);
dc.Add("X",10);
dc.Add("XL",40);
dc.Add("XC",90);
dc.Add("L",50);
dc.Add("C", 100);
dc.Add("CD", 400);
dc.Add("CM", 900);
dc.Add("D", 500);
dc.Add("M", 1000);
var sum = 0;
for(var i = 0;i < s.Length;)
{
if(i + 2 <= s.Length && dc.ContainsKey(s.Substring(i,2)))
{
sum += dc[s.Substring(i,2)];
i += 2;
} else {
sum += dc[s.Substring(i,1)];
i ++;
}
}
return sum;
}
}