思路:左边的数字小于右边的数字,就加上左边的数字,反之就减去右边的数字,注意边界值。
public static int romantOInt(String s) {
if (null == s || s.length() == 0){
return -1;
}
Map<Character, Integer> romanMap = new HashMap<>();
romanMap.put('I', 1);
romanMap.put('V', 5);
romanMap.put('X', 10);
romanMap.put('L', 50);
romanMap.put('C', 100);
romanMap.put('D', 500);
romanMap.put('M', 1000);
int len = s.length();
int sum = 0;
for (int i = 0; i < s.length() - 1; i ++) {
if (romanMap.get(s.charAt(i)) < romanMap.get(s.charAt(i+1))) {
sum = sum - romanMap.get(s.charAt(i));
} else {
sum = sum + romanMap.get(s.charAt(i+1));
}
}
return sum + romanMap.get(s.charAt(len - 1));
}