罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
示例 1:
输入: "III" 输出: 3
示例 2:
输入: "IV" 输出: 4
* 解题思路 判断前一位表示的数字是否比该位置小 如果小减去前一位表示的数字 * (注意:因为遍历前一位是已经将前一位加入res中所以需要减去2倍前一位表示的数)
public int romanToInt(String s) {
int res = 0 , i=0;
int length = s.length();
int pre = 0;
while (i < length){
switch (s.charAt(i)){
case 'M':
if (pre<1000){
res +=1000-pre*2;
}else{
res +=1000;
}
pre = 1000;
break;
case 'D':
if (pre<500){
res +=500-pre*2;
}else{
res +=500;
}
pre = 500;
break;
case 'C':
if (pre<100){
res +=100-pre*2;
}else{
res +=100;
}
pre = 100;
break;
case 'L':
if (pre<50){
res +=50-pre*2;
}else{
res +=50;
}
pre = 50;
break;
case 'X':
if (pre<10){
res +=10-pre*2;
}else{
res +=10;
}
pre = 10;
break;
case 'V':
if (pre<5){
res +=5-pre*2;
}else{
res +=5;
}
pre = 5;
break;
case 'I':
if (pre<1){
res +=1-pre*2;
}else{
res +=1;
}
pre = 1;
break;
}
i++;
}
return res;
}