Un palíndromo también llamado palindromo, palíndroma o palindroma, es una palabra, número o frase que se lee igual adelante que atrás. Fuente: Wikipedia.
Hoy veremos cómo saber o comprobar si una cadena o String de Java es un palíndromo. Podremos saber si una palabra es palíndroma, o incluso saber si una oración larga es palíndroma.
Para ello vamos a remover los espacios, comas y otros signos que no cuentan al hacer la comparación. Por poner un ejemplo, “A ti no, bonita” es un palíndromo si quitamos espacios y la coma.
Veamos entonces la función esPalindromo
en Java.
Aprovecho este espacio para recomendarte un punto de venta gratuito en la nube. Por cierto, la captura del código fue tomada con Polacode y le puse la marca de agua con el programa WaterPy.
Lo primero es quitar espacios en blanco, comas y esas cosas que no cuentan al comprobar si una palabra es palíndroma. También se convierte a una misma notación, es decir, convertimos la cadena a minúscula o a mayúscula pero no mezclado.
Después, se invierte la cadena (como vimos en este post) y se comprueba si la cadena, al ser invertida, es igual a la cadena original.
En caso de que sí sea igual al invertirla, se dice que es palíndroma.
Aquí dejo la función, la cual regresa un booleano
y recibe una cadena. Es estática porque así lo requiere la clase, pero lo que importa es el código, lo demás puedes modificarlo a tu gusto.
/**
Comprobar si es palíndromo en Java
@author parzibyte
*/ public static boolean esPalindromo(String cadena) {
// Convertir a minúscula y quitar espacios " ", puntos "." y comas ","
// También remplazar palabras con acento p.ej. í => i
cadena = cadena.toLowerCase().replace("á", "a").replace("é", "e").replace("í", "i").replace("ó", "o")
.replace("ú", "u").replace(" ", "").replace(".", "").replace(",", "");
// Invertir la cadena, y si es igual que la original entonces
// son palíndromos
String invertida = new StringBuilder(cadena).reverse().toString();
// Para invertir recomiendo ver
// https://parzibyte.me/blog/2019/02/20/invertir-cadena-string-java/
return invertida.equals(cadena);
}
Como lo dije, la función recibe una cadena o String
y devuelve true
o false
.
Para realizar el algoritmo que comprueba si es o no palíndromo, se convierte a minúscula y se le quitan los espacios y comas. También se remplazan las vocales acentuadas por las no acentuadas.
Aquí está el código completo que recorre un arreglo de cadenas y por cada una de ellas va indicando si la palabra es palíndroma; a veces también se prueba con algunas oraciones largas:
class Main {
public static void main(String[] args) {
String[] cadenas = { "La ruta natural", "Esto no es", "Parzibyte", "Hola", "Sol", "Ana", "Oro", "Oso",
"A ti no, bonita",
"Adivina ya te opina, ya ni miles origina, ya ni cetro me domina, ya ni monarcas, a repaso ni mulato carreta, acaso nicotina, ya ni cita vecino, anima cocina, pedazo gallina, cedazo terso nos retoza de canilla goza, de pánico camina, ónice vaticina, ya ni tocino saca, a terracota luminosa pera, sacra nómina y ánimo de mortecina, ya ni giros elimina, ya ni poeta, ya ni vida",
"A mamá, Roma le aviva el amor a papá y a papá, Roma le aviva el amor a Mamá", "Me gusta programar en Java" };
for (String cadena : cadenas) {
System.out.println("¿'" + cadena + "' es palíndromo? " + esPalindromo(cadena));
}
}
/**
Comprobar si es palíndromo en Java
@author parzibyte
*/ public static boolean esPalindromo(String cadena) {
// Convertir a minúscula y quitar espacios " ", puntos "." y comas ","
// También remplazar palabras con acento p.ej. í => i
cadena = cadena.toLowerCase().replace("á", "a").replace("é", "e").replace("í", "i").replace("ó", "o")
.replace("ú", "u").replace(" ", "").replace(".", "").replace(",", "");
// Invertir la cadena, y si es igual que la original entonces
// son palíndromos
String invertida = new StringBuilder(cadena).reverse().toString();
// Para invertir recomiendo ver
// https://parzibyte.me/blog/2019/02/20/invertir-cadena-string-java/
return invertida.equals(cadena);
}
}
Por cierto, ahí las cadenas son declaradas en el arreglo pero bien podrían ser introducidas por el usuario.
Si quieres, puedes descargar el código. Para ello te recomiendo instalar Java y también NetBeans.
Aprende más sobre Java aquí, y lee más sobre algoritmos aquí.
En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
Esta web usa cookies.