java

Palíndromo en Java: saber si una cadena es palíndroma

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.

Algoritmo para determinar si es palíndromo en Java

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.

Antes de todo

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.

Explicación del algoritmo para saber si es un palíndromo en Java

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.

Función que dice si una cadena es palíndronma/palíndromo en Java

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.

Ejemplo de uso

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.

Descargar y probar función para saber si una cadena es palíndroma en Java

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í.

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Tramitar acta de nacimiento en línea de manera instantánea

En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…

1 min hace

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 semanas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esta web usa cookies.