13 - Roman to Integer

 JAVA

  • class Solution {
        public int romanToInt(String s) {
            String cs = "IVXLCDM";
            int[] vs = {1, 5, 10, 50, 100, 500, 1000};
            Map<Character, Integer> d = new HashMap<>();
            for (int i = 0; i < vs.length; ++i) {
                d.put(cs.charAt(i), vs[i]);
            }
            int n = s.length();
            int ans = d.get(s.charAt(n - 1));
            for (int i = 0; i < n - 1; ++i) {
                int sign = d.get(s.charAt(i)) < d.get(s.charAt(i + 1)) ? -1 : 1;
                ans += sign * d.get(s.charAt(i));
            }
            return ans;
        }
    }
C++

  • class Solution {
    public:
        int romanToInt(string s) {
            unordered_map<char, int> nums{
                {'I', 1},
                {'V', 5},
                {'X', 10},
                {'L', 50},
                {'C', 100},
                {'D', 500},
                {'M', 1000},
            };
            int ans = nums[s.back()];
            for (int i = 0; i < s.size() - 1; ++i) {
                int sign = nums[s[i]] < nums[s[i + 1]] ? -1 : 1;
                ans += sign * nums[s[i]];
            }
            return ans;
        }
    };

Comments