Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Symbol | I | V | X | L | C | D | M |
---|---|---|---|---|---|---|---|
Value | 1 | 5 | 10 | 50 | 100 | 500 | 1,000 |
Number | 4 | 9 | 40 | 90 | 400 | 900 |
---|---|---|---|---|---|---|
Notation | IV | IX | XL | XC | CD | CM |
public int romanToInt(String s) {
// Write your code here
if(s == null || s.length() == 0){
return 0;
}
int ans = 0;
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(c == 'M'){
ans += 1000;
} else if(c == 'D'){
ans += 500;
} else if(c == 'C'){
ans += 100;
if(i + 1 < s.length()){
//400
if(s.charAt(i + 1) == 'D'){
ans += 300;
i++;
//900
} else if(s.charAt(i + 1) == 'M'){
ans += 800;
i++;
}
}
} else if(c == 'L'){
ans += 50;
} else if(c == 'X'){
ans += 10;
if(i + 1 < s.length()){
//40
if(s.charAt(i + 1) == 'L'){
ans += 30;
i++;
//90
} else if(s.charAt(i + 1) == 'C'){
ans += 80;
i++;
}
}
} else if(c == 'V'){
ans += 5;
} else if(c == 'I'){
ans += 1;
if(i + 1 < s.length()){
//4
if(s.charAt(i + 1) == 'V'){
ans += 3;
i++;
//9
} else if(s.charAt(i + 1) == 'X'){
ans += 8;
i++;
}
}
}
}
return ans;
}