package day20190415;
import java.util.HashMap;
/**
* 思路解析:我们使用HashMap来建立映射表然后我们从右往左解析 要是左边的数字比他相邻的右边数字大
* 就加上他对应的值 要是比他小就减去对用的值
* 这里我们的键应该是char 不要使用String
*/
public class RomanToInt {
public static void main(String[] args) {
System.out.println(romanToInt("MCMXCIV"));
}
public static int romanToInt(String s) {
int total = 0;
HashMap<Character,Integer> hashMap = new HashMap<>();
hashMap.put('I',1);
hashMap.put('V',5);
hashMap.put('X',10);
hashMap.put('L',50);
hashMap.put('C',100);
hashMap.put('D',500);
hashMap.put('M',1000);
if (s.length() == 1) {
return hashMap.get(s.charAt(0));
}
int len = s.length();
total += hashMap.get(s.charAt(len - 1));
for (int i = len - 1; i > 0; i--) {
if (hashMap.get(s.charAt(i - 1)) >= hashMap.get(s.charAt(i))) {
total += hashMap.get(s.charAt(i - 1));
} else {
total -= hashMap.get(s.charAt(i - 1));
}
}
return total;
}
}