Question
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.
My C# Solution
public class Solution {
private static Dictionary<string, int> RomanNumberMapping =
new Dictionary<string, int>()
{
{ "I", 1 }, { "V", 5 }, { "X", 10 }, { "L", 50 },
{ "C", 100 }, { "D", 500 }, { "M", 1000 }
};
public int RomanToInt(string s) {
var romanChars = s.ToCharArray();
var result = 0;
var previousNumber = 0;
for (var i = 0; i < romanChars.Length; i++)
{
var currentRoman = romanChars[i].ToString();
var currentNumber = RomanNumberMapping[currentRoman];
var numberToPlus = currentNumber;
if (previousNumber < currentNumber && previousNumber != 0)
{
result -= previousNumber;
numberToPlus = currentNumber - previousNumber;
}
result += numberToPlus;
previousNumber = currentNumber;
}
return result;
}
}