mirror of
https://github.com/arkorty/LeetCode.git
synced 2026-03-17 16:51:46 +00:00
56 lines
1.6 KiB
Java
56 lines
1.6 KiB
Java
class RomanToInteger {
|
|
int applyOffset(int value, int last_value, int offset) {
|
|
if (last_value > value) {
|
|
return offset - value;
|
|
} else {
|
|
return offset + value;
|
|
}
|
|
}
|
|
|
|
public int romanToInt(String roman) {
|
|
int integer = 0;
|
|
int last_value = 0;
|
|
for (int x = roman.length() - 1; x >= 0; x--) {
|
|
char convertToDecimal = roman.charAt(x);
|
|
|
|
switch (convertToDecimal) {
|
|
case 'M':
|
|
integer = applyOffset(1000, last_value, integer);
|
|
last_value = 1000;
|
|
break;
|
|
|
|
case 'D':
|
|
integer = applyOffset(500, last_value, integer);
|
|
last_value = 500;
|
|
break;
|
|
|
|
case 'C':
|
|
integer = applyOffset(100, last_value, integer);
|
|
last_value = 100;
|
|
break;
|
|
|
|
case 'L':
|
|
integer = applyOffset(50, last_value, integer);
|
|
last_value = 50;
|
|
break;
|
|
|
|
case 'X':
|
|
integer = applyOffset(10, last_value, integer);
|
|
last_value = 10;
|
|
break;
|
|
|
|
case 'V':
|
|
integer = applyOffset(5, last_value, integer);
|
|
last_value = 5;
|
|
break;
|
|
|
|
case 'I':
|
|
integer = applyOffset(1, last_value, integer);
|
|
last_value = 1;
|
|
break;
|
|
}
|
|
}
|
|
return integer;
|
|
}
|
|
}
|