13. Roman to Integer - cocoder39/coco39_LC GitHub Wiki

13. Roman to Integer

Java

class Solution {
    private static Map<Character, Integer> values = new HashMap<>();
    static {
        values.put('M', 1000);
        values.put('D', 500);
        values.put('C', 100);
        values.put('L', 50);
        values.put('X', 10);
        values.put('V', 5);
        values.put('I', 1);
    }

    public int romanToInt(String s) {
        int i = 0;
        int value = 0;
        while (i < s.length()) {
            int curVal = values.get(s.charAt(i));
            int nextVal = 0;
            if (i + 1 < s.length()) {
                nextVal = values.get(s.charAt(i+1));
            } 
            
            if (curVal < nextVal) {
                value += nextVal - curVal;
                i += 2;
            } else {
                value += curVal;
                i += 1;
            }
        }
        return value;
    }
}