Convierta un número romano a decimal usando Hashmap en Java

Dado un número romano, la tarea es encontrar el valor decimal correspondiente.

Nota: los números romanos están representados por siete símbolos diferentes: I, V, X, L, C, D y M.

Ejemplos:

Entrada: “III”

Salida: 3

Entrada: “MDCCLX”

Salida: 1760

Acercarse:

  1. Recorre cada carácter de la string que contiene los números romanos.
  2. Compare el valor del símbolo romano actual con el valor del símbolo romano a su derecha. Si el valor actual es mayor o igual que el valor del símbolo a la derecha, agregue el valor del símbolo actual al total. Si el valor actual es menor que el valor del símbolo a la derecha, reste el valor del símbolo actual del total.

A continuación se muestra la implementación del enfoque anterior:

Java

// Java Program to Convert a Roman
// Number to Decimal using Hashmap
import java.io.*;
import java.util.Scanner;
import java.util.HashMap;
class solution {
    int romanToInt(String s)
    {
        // Create a empty hash map.
        HashMap<Character, Integer> map = new HashMap<>();
 
        // Putting value in hash map.
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);
 
        // Creating integer variable to store result.
        int result = 0;
 
        // initialize loop to iterate in string.
        for (int i = 0; i < s.length(); i++) {
 
            // Checking that current element
            // is not smaller then previous
            if (i > 0
                && map.get(s.charAt(i))
                       > map.get(s.charAt(i - 1))) {
                result += map.get(s.charAt(i))
                          - 2 * map.get(s.charAt(i - 1));
            }
            else {
                result += map.get(s.charAt(i));
            }
        }
        // Returning the integer value of Roman number.
        return result;
    }
}
public class GFG {
 
    public static void main(String[] args)
    {
        String s;
       
        // Scanner sc = new Scanner(System.in);
        // s = sc.nextLine();
        solution gfg = new solution();
        System.out.println(gfg.romanToInt("MDCCLX"));
    }
}

Producción:

1760

Complejidad de tiempo: O(N)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por shvrekhan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *