【LeetCode】13. Roman to Integer 罗马数字转整数

时间:2023-12-25 21:38:43

题目:

  Given a roman numeral, convert it to an integer.

  Input is guaranteed to be within the range from 1 to 3999.

思路:与12题正好相反,罗马数字基本字符集:I V X L C D M (1, 5, 10, 50, 100, 500, 1000)。思路是从字符串最低位开始匹配,累加相应字符对应的阿拉伯数字,要注意的就是I,X,L(1,10,100)要判断是在左还是在右,在左就减在右就加。判断方法是看累加值是否分别大于5,50,500

public class Solution {
public int romanToInt(String s) {
char[] arr=s.toCharArray();
int val=0;
for(int i=arr.length-1;i>-1;i--){
switch(arr[i]){
case 'I':val+=val>=5?-1 : 1;
break;
case 'V':val+=5;
break;
case 'X':val+=10*(val>=50?-1:1);
break;
case 'L':val+=50;
break;
case 'C':val+=100*(val>=500?-1:1);
break;
case 'D':val+=500;
break;
case 'M':val+=1000;
break;
}
}
return val;