Palíndromo en Java

Hola a todos, hoy os voy a explicar como indicar si una palabra es un palíndromo o no.

Un palíndromo es aquellas palabras que se leen igual de izquierda a derecha que de derecha a izquierda. Por ejemplo, la palabra alola si la invertimos sigue siendo la mima palabra.

La idea es que si la palabra original es igual a la palabra invertida, será un palíndromo.

Ya hemos visto como invertir una cadena en Java en este tutorial:

https://www.discoduroderoer.es/como-invertir-una-cadena-en-java/

Así sería el código:


import java.util.Scanner;


public class Palindromo {

    public static void main(String[] args) {
        
        Scanner sn = new Scanner(System.in);
        sn.useDelimiter("\n");
        
        // Pedimos una cadena y la convertimos a minisculas
        System.out.println("Escribe una cadena");
        String cadena = sn.next().toLowerCase();
        
        String cadenaInvertida = invertirCadena(cadena);
        
        // Comprobamos si es palindromo o no
        if(cadena.equals(cadenaInvertida)){
            System.out.println("Es palindromo");
        }else{
            System.out.println("No es palindromo");
        }
        
    }
    
    public static String invertirCadena(String cadena){
        
        cadena = cadena.toLowerCase();
        String cadenaInvertida = "";
        
        // Invertimos la cadena
        char caracter;
        for (int i = cadena.length() - 1; i >= 0; i--) {
            caracter = cadena.charAt(i);
            cadenaInvertida += caracter;
        }
        
        return cadenaInvertida;
    }
    
}

Este es el resultado:

Si lo queremos en función, seria así:


import java.util.Scanner;

public class Palindromo {

    public static void main(String[] args) {
        
        Scanner sn = new Scanner(System.in);
        sn.useDelimiter("\n");
        
        // Pedimos una cadena
        System.out.println("Escribe una cadena");
        String cadena = sn.next();
        
        if(esPalindromo(cadena)){
            System.out.println("Es palindromo");
        }else{
            System.out.println("No es palindromo");
        }
        
    }
    
    public static String invertirCadena(String cadena){
        
        cadena = cadena.toLowerCase();
        String cadenaInvertida = "";
        
        // Invertimos la cadena
        char caracter;
        for (int i = cadena.length() - 1; i >= 0; i--) {
            caracter = cadena.charAt(i);
            cadenaInvertida += caracter;
        }
        
        return cadenaInvertida;
    }
    
    public static boolean esPalindromo(String cadena){
        
        String cadenaInvertida = invertirCadena(cadena);
        
        // Comprobamos si es palindromo o no
        return cadena.equalsIgnoreCase(cadenaInvertida);
    }
    
}

El resultado seria el mismo.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.