题目链接:https://leetcode-cn.com/problems/roman-to-integer/
思路:用map标记每一个罗马数字代表的值,然后判断左边与右边相邻的大小,如果小,加一个当前值的相反数,否则加当前值即可。因为需要判断下标i和i+1的大小,所以最后一个下标len-1的值在循环结束的时候要记得加上。
上代码:
class Solution {
public int romanToInt(String s) {
Map<Character, Integer> map = new HashMap<>();
map.put('I', 1);
map.put('V', 5);
map.put('X', 10);
map.put('L', 50);
map.put('C', 100);
map.put('D', 500);
map.put('M', 1000);
int len = s.length();
int result = 0;
for (int i = 0; i < len-1; i++) {
int left = map.get(s.charAt(i));
int right = map.get(s.charAt(i+1));
if (left < right){
result += -1*left;
}else{
result += left;
}
}
return result + map.get(s.charAt(len-1));
}
}