Saltar al contenido
Portada » Palíndromos en Java

Palíndromos en Java

Vamos a desarrollar un algoritmo para saber si una palabra es palindromo en Java a partir de una frase dada. El programa completo identificará el palíndromo más pequeño y más grande dentro de la frase.

Un palíndromo es una palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda, ejemplos:

Entrada: Ana y los seres fueron de paseo
Palíndromo más pequeño: Ana
Palíndromo más grande: seres

Claves

Implementaremos dos métodos clave:

  • longitudPalindromo(): Esta función encuentra el palíndromo más corto y más largo entre las palabras de la frase recibida. Realizará llamadas a la función comprobarPalindromo() para verificar si cada palabra es o no un palíndromo y actualizará el resultado.
  • comprobarPalindromo(): Esta función comprueba si una palabra recibida es un palíndromo. Simplemente devolverá verdadero o falso.

Función para saber si una cadena es palindromo en Java

La función comprobarPalindromo() nos va a servir para calcular si una cadena recibida es o no un palíndromo:

    public static boolean comprobarPalindromo(String palabra)
    {
  
        int n = palabra.length();
  
        palabra = palabra.toLowerCase();
  
        for (int i = 0; i < n; i++, n--)
        {
            if (palabra.charAt(i) != palabra.charAt(n - 1))
                return false;
        }
  
        return true;
    }
  
 

Solución completa palíndromo en Java

El código siguiente implementa la solución completa. Analiza una frase y a partir de ella extrae tanto la palabra que sea el palíndromo más largo como el más corto.

public class Principal {
  

    public static boolean comprobarPalindromo(String palabra)
    {
  
        int n = palabra.length();
  
        palabra = palabra.toLowerCase();
  
        for (int i = 0; i < n; i++, n--)
        {
            if (palabra.charAt(i) != palabra.charAt(n - 1))
                return false;
        }
  
        return true;
    }
  
    public static void longitudPalindromo(int numPalabras, String palabras[])
    {
        
        int contador = 0;
        String masPequenyo= "", masGrande = "";
        
        for (int i = 0; i < numPalabras; i++) {
            
            if (comprobarPalindromo(palabras[i])) {
                contador ++;
                
                if (contador == 1)
                    masPequenyo= masGrande = palabras[i];
                else {
                    
                    if (masPequenyo.length()
                        > palabras[i].length())
                        masPequenyo= palabras[i];
  
                    if (masGrande .length()
                        < palabras[i].length())
                        masGrande = palabras[i];
                }
            }
        }
  
        if (count == 0)
            
            System.out.println("No se ha encontrado ningun palindromo");
        
        else {
            
            System.out.println("Palindromo mas pequenyo: "
                               + masPequenyo);
            System.out.println("Palindromo mas grande: "
                               + masGrande );
        }
    }
  
    public static void main(String[] args)
    {
        
        String frase= "Ana y los seres fueron de paseo";
        String palabra = "";
        
        String[] palabras = new String[100];
        int numPalabras= 0;
  
        frase= frase+ " ";
  
        for (int i = 0; i < frase.length(); i++) {
            

            if (frase.charAt(i) != ' ') {
                palabra= palabra+ frase.charAt(i);
            }
            
            else {
                
                palabras[numPalabras] = palabra;
                numPalabras++;
                palabra= "";
            }
        }
        
        System.out.println("Frase : " + frase);
        lengthPalindrome(numPalabras, palabras);
    }
}

Recursos básicos Java

AsuntoDescripción
Tutorial básico y sintaxisTutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje.
Hilos (Threads)Aprende a manejar hilos y las cuestiones básicas de la concurrencia
Funciones LambdaAquí te enseñamos las nociones más importantes para arrancas con funciones lambda
PalíndromosPrograma de ejemplo para el uso de palíndromos en Java.
Máquina Virtual de JavaTe explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM)
JDK, JRE y JVMDiferencias entre el JDK, JRE y JVM.
Mejores libros Java en EspañolHazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas
TensorFlowManejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución
Tutorial Log4jTutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java
Java SecurityEntiende y aplica las posibilidades que da Java para mantener la seguridad
Tutorial JConsoleAprende los conceptos básicos de monitorización de procesos Java con JConsole
JavaFXTutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web.
Estructuras de datos en JavaExplicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol.
JavaapiConjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar
Algoritmo HuffmanMétodo eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes