package com.thealgorithms.conversions;
import java.util.HashMap;
import java.util.Map;
public final class RomanToInteger {
private RomanToInteger() {
}
private static final Map<Character, Integer> ROMAN_TO_INT = new HashMap<>() {
{
put('I', 1);
put('V', 5);
put('X', 10);
put('L', 50);
put('C', 100);
put('D', 500);
put('M', 1000);
}
};
public static int romanToInt(String a) {
a = a.toUpperCase();
char prev = ' ';
int sum = 0;
int newPrev = 0;
for (int i = a.length() - 1; i >= 0; i--) {
char c = a.charAt(i);
if (prev != ' ') {
newPrev = ROMAN_TO_INT.get(prev) > newPrev ? ROMAN_TO_INT.get(prev) : newPrev;
}
int currentNum = ROMAN_TO_INT.get(c);
if (currentNum >= newPrev) {
sum += currentNum;
} else {
sum -= currentNum;
}
prev = c;
}
return sum;
}
public static void main(String[] args) {
int sum = romanToInt("MDCCCIV");
System.out.println(sum);
}
}