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. Los campos obligatorios están marcados con *