代码
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 sum =0;
int n = s.length();
char[] charArray = s.toCharArray();
for (int i = 0; i < charArray.length; i++){
Integer i1 = map.get(charArray[i]);
if (i < n - 1 && i1 < map.get(charArray[i + 1])){
sum -= i1;
}
else {
sum += i1;
}
}
return sum;
}
}
1、这里使用了hash表,将对应的罗马数字和数字对应存储
2、将字符串转为对应的char数组
3、循环数组,将对应的值取出来,判断取出的值是否小于进一位的值,如果为true第一位取负数,再循环第二位......