Roman Numerals to Integer Conversion
Roman numerals are represented by seven different symbols: I, V, X, L, C, D, and M, with their corresponding values as follows:
Symbol | Value |
---|---|
I | 1 |
V | 5 |
X | 10 |
L | 50 |
C | 100 |
D | 500 |
M | 1000 |
For example, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.
Roman numerals are usually written from largest to smallest from left to right. However, there are six instances where subtraction is used:
- I can be placed before V (5) and X (10) to make 4 and 9.
- X can be placed before L (50) and C (100) to make 40 and 90.
- C can be placed before D (500) and M (1000) to make 400 and 900.
Given a Roman numeral, you can convert it to an integer.
Example 1:
Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90, and IV = 4.
Constraints:
- 1 <= s.length <= 15
- s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M').
- It is guaranteed that s is a valid roman numeral in the range [1, 3999].
import java.util.HashMap;
class Solution {
public int romanToInt(String s) {
int sum = 0;
HashMap<Character, Integer> romansValue = new HashMap<Character, Integer>();
romansValue.put('I', 1);
romansValue.put('V', 5);
romansValue.put('X', 10);
romansValue.put('L', 50);
romansValue.put('C', 100);
romansValue.put('D', 500);
romansValue.put('M', 1000);
for(int i=0; i<s.length()-1; i++){
if(romansValue.get(s.charAt(i)) < romansValue.get(s.charAt(i+1))){
sum -= romansValue.get(s.charAt(i));
}else{
sum += romansValue.get(s.charAt(i));
}
}
sum += romansValue.get(s.charAt(s.length()-1));
return sum;
}
}
0 Comments