# 13. Roman to Integer

![](https://4272748102-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LekNH5IywF8mjBxFcnu%2F-MbLScx0iXYFrJeZopx_%2F-MbLa3H1PEuBrKQHPp7g%2Fimage.png?alt=media\&token=3309867d-4444-4820-9bb9-2539a4f0239e)

![](https://4272748102-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LekNH5IywF8mjBxFcnu%2F-MbLScx0iXYFrJeZopx_%2F-MbLa8_a8oN7yW_1OpYm%2Fimage.png?alt=media\&token=e7c26153-33b4-44eb-b46b-684e55c82bc4)

time: O(n)

space: O(1)

```java
class Solution {
    public int romanToInt(String s) {
        int result = 0;
        for (int i = 0; i < s.length()-1;i++) {
            int pre = helper(s.charAt(i));
            int post = helper(s.charAt(i+1));
            if (pre < post) {
                result -= pre;
            } else {
                result += pre;
            }
        }
        result += helper(s.charAt(s.length() - 1));
        return result;
    }
    private int helper(char c) {
        switch(c) {
            case 'I': return 1;
            case 'V': return 5;
            case 'X': return 10;
            case 'L': return 50;
            case 'C': return 100;
            case 'D': return 500;
            case 'M': return 1000;
        }    
        return -1;
    }
    
    /*
    private int helper(char c) {
        Map<Character, Integer> map = Map.of(
            'I', 1, 'V', 5, 'X', 10,
            'L', 50, 'C', 100, 'D', 500, 'M', 1000
        );
        return map.get(c);    
    }
    */
}
```
