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
Post a Comment