原题链接:13.罗马数字转整数
题目描述:
解:
观察规律,罗马数字小值在大值右边时,直接加上这个值,如果在左边,就加上他的相反数。
class Solution {
public int romanToInt(String s) {
HashMap<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 ret = 0;
for(int i=0; i<s.length(); i++) {
if ( i!=s.length()-1 && map.get(s.charAt(i)) < map.get(s.charAt(i+1))) {
ret += -1 * map.get(s.charAt(i));
} else {
ret += map.get(s.charAt(i));
}
}
return ret;
}
}