Write catalog title here
1. Title description
2. Problem solving ideas
Putting a small value to the left of a large value is a subtraction, otherwise it is an addition.
In terms of code implementation, you can look back one more bit and compare the size relationship between the current bit and the next bit to determine whether the current bit is an addition or a subtraction. When there is no next digit, just add.
The value of the current bit can also be retained. When traversing to the next bit, compare the relationship between the retained value and the traversed bit, and then determine whether the retained value is plus or minus. The last digit can be added.
3. Code implementation
class Solution {
public int romanToInt(String s) {
int sum = 0;
int preNum = getValue(s.charAt(0));
for(int i = 1;i < s.length(); i ++) {
int num = getValue(s.charAt(i));
if(preNum < num) {
sum -= preNum;
} else {
sum += preNum;
}
preNum = num;
}
sum += preNum;
return sum;
}
private int getValue(char ch) {
switch(ch) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return 0;
}
}
}