第一印象,好乱,这玩意咋解决。
忍不住看了一眼题解,哈哈哈。
简单来说就是,前面大于等于后面的就加,否则就减掉。
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);
if(s.length() == 1){
return map.get(s.charAt(0));
}
int i=0,j=1;
int sum = 0;
while(j<s.length()){
if(map.get(s.charAt(i)) >= map.get(s.charAt(j))){
sum += map.get(s.charAt(i));
}else{
sum -= map.get(s.charAt(i));
}
i++;j++;
}
sum += map.get(s.charAt(s.length()-1));
return sum;
}