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.
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.
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.
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:
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.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.