Pangrama en Java

En este post vamos a implementar un algoritmo para saber si una cadena es un pangrama, usando el lenguaje de programación Java.

En caso de que no lo sepas, se denomina pangrama (de manera simple) al texto que contiene todas las letras del alfabeto.

Por ejemplo, el siguiente texto es un pangrama, pues contiene todas las letras del alfabeto español:

El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja

Veamos cómo comprobar si string es pangrama en Java.

Explicación del algoritmo

Lo único que tenemos que hacer es comprobar que la cadena tenga cada letra del abecedario o alfabeto. Por lo tanto, tenemos que recorrer todo el alfabeto de la A a la Z y comprobar que la cadena contenga la letra.

Si terminamos de recorrer el alfabeto y la cadena tuvo cada letra, entonces decimos que la cadena sí es pangrama.

En caso de que se encuentre que una letra no está dentro de la cadena, indicamos que no es pangrama.

Para reducir las comparaciones vamos a convertir la cadena a mayúscula, y recorrer el alfabeto en mayúsculas. De modo que no importa si la cadena original tiene minúsculas, pues se convertirá y comprobará con mayúsculas.

Función pangrama en Java

Es momento de ver la función. Queda así:

public static boolean esPangrama(String cadena) {
    cadena = cadena.toUpperCase(); // Convertir a mayúscula para simplificar comparaciones
    String letrasDelAlfabeto = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
    for (int x = 0; x < letrasDelAlfabeto.length(); x++) {
        if (!cadena.contains(Character.toString(letrasDelAlfabeto.charAt(x)))) {
            return false;
        }
    }
    return true;
}

Recibe una cadena y regresa un booleano indicando si la cadena es pangrama.

Demostración y ejemplo

Ahora veamos cómo usar la función. Todo el código queda así:

/*

  ____          _____               _ _           _       
 |  _ \        |  __ \             (_) |         | |      
 | |_) |_   _  | |__) |_ _ _ __ _____| |__  _   _| |_ ___ 
 |  _ <| | | | |  ___/ _` | '__|_  / | '_ \| | | | __/ _ \
 | |_) | |_| | | |  | (_| | |   / /| | |_) | |_| | ||  __/
 |____/ \__, | |_|   \__,_|_|  /___|_|_.__/ \__, |\__\___|
         __/ |                               __/ |        
        |___/                               |___/         
    
    Blog:       https://parzibyte.me/blog
    Ayuda:      https://parzibyte.me/blog/contrataciones-ayuda/
    Contacto:   https://parzibyte.me/blog/contacto/
    
    Copyright (c) 2020 Luis Cabrera Benito
    Licenciado bajo la licencia MIT
    
    El texto de arriba debe ser incluido en cualquier redistribucion
*/
public class Main {
    public static void main(String[] args) {
        String cadenasParaProbar[] = { "Mi hijo degustó en el festival de bayas una extraña pizza de kiwi con queso",
                "Hola",
                "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja",
                "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ", // Debería ser true
                "ABCDEFGHIJKLMNÑOPQRSTUVWXY", // Sin Z
        };

        for (String cadena : cadenasParaProbar) {
            System.out.printf("La cadena '%s' es pangrama? %b\n", cadena, esPangrama(cadena));
        }
    }

    public static boolean esPangrama(String cadena) {
        cadena = cadena.toUpperCase(); // Convertir a mayúscula para simplificar comparaciones
        String letrasDelAlfabeto = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
        for (int x = 0; x < letrasDelAlfabeto.length(); x++) {
            if (!cadena.contains(Character.toString(letrasDelAlfabeto.charAt(x)))) {
                return false;
            }
        }
        return true;
    }
}

La salida es correcta como se puede apreciar en la imagen de ejecución:

Pangrama en Java – Ejecución del código

Nota: en Windows me parece que hay un problema con la Ñ, o al menos en la terminal cuando se usa javac.

¿Te gusta la programación en Java? en mi blog encontrarás más contenido sobre Java.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

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