[LeetCode] 13. Roman to Integer ☆☆
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解法:
只要考虑两种情况即可:
第一,如果当前数字是最后一个数字,或者之后的数字比它小的话,则加上当前数字
第二,其他情况(即为4或者9,这种情况下才可能出现后面的罗马数字比前面的大),则减去这个数字
public class Solution { public int romanToInt(String s) { if (s == null || s.length() == 0) return 0; int res = 0; HashMap<Character, Integer> map = new HashMap<>(); map.put('M', 1000); map.put('D', 500); map.put('C', 100); map.put('L', 50); map.put('X', 10); map.put('V', 5); map.put('I', 1); for (int i = 0; i < s.length() - 1; i++) { if (map.get(s.charAt(i)) >= map.get(s.charAt(i + 1))) { res += map.get(s.charAt(i)); } else { res -= map.get(s.charAt(i)); } } res += map.get(s.charAt(s.length() - 1)); return res; } }