Programa para analizar las Moléculas y obtener el conteo de Átomos

Dada una fórmula química como una string, la tarea es obtener el recuento de átomos en esta fórmula química.
Ejemplos: 
 

Input: str = "Fe2H3OH"
Output: Fe 2
        H 4
        O 1

Input: str = "NaCl2NaO2"
Output: Na 2
        Cl 2
        O 2

Enfoque: El siguiente enfoque funciona en el lenguaje de programación Java: 
 

  • Tome LinkedHashMap para almacenar el nombre del átomo (clave) y el recuento (valor) en el orden de inserción.
  • Compruebe si el carácter de string está en minúsculas y luego agréguelo al carácter de string en mayúsculas anterior.
  • Verifique si la string contiene el número y luego agregue al conteo (valor) a su nombre de átomo particular (clave).
  • Imprima el nombre del átomo (clave) así como el conteo (valor).

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

Java

// Java program to parse the molecule
// and get the atoms count
 
import java.io.*;
import java.util.*;
 
class GFG {
 
    static void getCount(String str)
    {
 
        // Use LinkedHashmap to store
        // elements in insertion order
        Map<String, Integer> mp
            = new LinkedHashMap<String, Integer>();
 
        for (int i = 0; i < str.length(); i++) {
            int count = 0;
 
            // Convert the string element into character
            char c = str.charAt(i);
            String a = " ";
 
            // Convert the character element
            // into string element
            a = String.valueOf(c);
 
            // Check string contains the Capital A - Z value.
            if (a.matches("[A-Z]")) {
 
                for (int j = i + 1; j < str.length(); j++) {
 
                    char d = str.charAt(j);
                    String b = String.valueOf(d);
 
                    // Check string contains the small a-z value.
                    if (b.matches("[a-z]")) {
 
                        a += b;
 
                        if (mp.get(a) == null)
                            mp.put(a, 1);
                        else
                            mp.put(a, mp.get(a) + 1);
                        count = 1;
                    }
 
                    // Check string contains the number value.
                    else if (b.matches("[\\d]")) {
 
                        int k = Integer.parseInt(b);
                        mp.put(a, k);
                        count = 1;
                    }
 
                    else {
                        i = j - 1;
                        break;
                    }
                }
 
                if (count == 0) {
                    if (mp.get(a) == null)
                        mp.put(a, 1);
                    else
                        mp.put(a, mp.get(a) + 1);
                }
            }
        }
 
        System.out.println("\nAtom count:");
        for (Map.Entry<String, Integer>
                 entry : mp.entrySet())
            System.out.println(entry.getKey()
                               + " "
                               + entry.getValue());
 
        mp.clear();
    }
 
    // Driver code
    public static void main(String[] args)
    {
        String str = "Fe2H3OH";
        System.out.println("Given molecule: "
                           + str);
        getCount(str);
    }
}
Producción: 

Given molecule: Fe2H3OH

Atom count:
Fe 2
H 4
O 1

 

Publicación traducida automáticamente

Artículo escrito por Akash_Sah 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 *