遍历每个字母,该位置比后面大,做加法,该位置比后面小,做减法。
package edu.dlmu.sei.leetcode;
import java.util.HashMap;
import java.util.Map;
public class Solution {
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.romanToInt("IV"));
}
public int romanToInt(String s) {
Map<Character, Integer> map = new HashMap<Character, Integer>() {
{
put('I', 1);
put('V', 5);
put('X', 10);
put('L', 50);
put('C', 100);
put('D', 500);
put('M', 1000);
}
};
int result = 0;
char[] arr = s.toCharArray();
for (int i =0; i < arr.length; i++) {
int value = map.get(arr[i]);//取出对应数字
//如果最后一位,不需要和后一位比较,直接相加。
//如果该位和后一位比较大于,则相加。
/**
* 比后面小就做减法,比后面大就做加法。
*/
if (i == arr.length -1 || map.get(arr[i]) >= map.get(arr[i+1])) {
result+=value;
} else {
result-=value;
}
}
return result;
}
}