13. Roman to Integer
https://leetcode.com/problems/roman-to-integer/#/description
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
思路
首先罗马数字”I”:1,”V”:5,”X”:10,”L”:50,”C”:100,”D”:500,”M”:1000,且每个数字出现不能超过3个,如”VIII”:8,”IX”:9,这里的数字范围是3999,也就是说最大的是MMM,所以找到M和D,直接为正数
代码
public static int romanToInt(String s) {
int res = 0;
for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
switch (c) {
case 'I':
res += (res >= 5 ? -1 : 1);
break;
case 'V':
res += 5;
break;
case 'X':
res += 10 * (res >= 50 ? -1 : 1);
break;
case 'L':
res += 50;
break;
case 'C':
res += 100 * (res >= 500 ? -1 : 1);
break;
case 'D':
res += 500;
break;
case 'M':
res += 1000;
break;
}
}
return res;
}