Java Program to convert Roman into a decimal integer number

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].
Program Solution :
       
    
     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;
        }
     }
   

Post a Comment

0 Comments