原题链接在这里:https://leetcode.com/problems/roman-to-integer/
取当前数值若是比之前的小,就正常加上当前数值,若是比之前位大说明刚才加错了,需要先减掉在加上(cur-pre).
e.g. "XIV", at the beginning, res = 10. When i = 1, cur = 1, pre = 10, cur<pre, res = 11; when i = 2, cur = 5, pre = 1, cur>pre, res = 11-1+(5-1) = 14. 若是cur==pre,正常加cur,"XX" = 20.
AC Java:
public class Solution {
public int romanToInt(String s) {
int res = charToInt(s.charAt(0));
for(int i = 1; i < s.length(); i++){
int cur = charToInt(s.charAt(i));
int pre = charToInt(s.charAt(i-1));
if(cur>pre){
res = res-pre+(cur-pre);
}else{
res+=cur;
}
}
return res;
}
private int charToInt(char c){
int res = 0;
switch(c){
case 'I':
res = 1;
break;
case 'V':
res = 5;
break;
case 'X':
res = 10;
break;
case 'L':
res = 50;
break;
case 'C':
res = 100;
break;
case 'D':
res = 500;
break;
case 'M':
res = 1000;
break;
default:
res = 0;
}
return res;
}
}