feed twitter facebook LinkedIn facebook

Java » Saber si una palabra es un palíndromo con Java

Septiembre 19, 2007 por Víctor Cuervo . 25179 visitas 30 Comentarios Imprimir Imprimir

Uno de los primeros programas que recuerdo resolver en la Universidad, cuando estudiaba informática, es el saber si una palabra es un palíndromo.

Palíndromo, 1. m. Palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda; p. ej., anilina; dábale arroz a la zorra el abad.

Mediante el lenguaje Java unas pocas líneas de código nos ayudarán a resolver el problema. La idea general es ir recorriendo la palabra desde izquierda a derecha, incrementando carácter a carácter y a la misma vez ir recorriendo la palabra de derecha a izquierda, decrementando los caracteres.

En cada incremento/decremento compararemos los valores de los caracteres. Si son iguales, la palabra podrá ser un palíndromo, en cuanto tengamos dos valores distintos, la palabra ya no será un palíndromo.

Pero veámoslo con código. Lo primero será definir la palabra y las posiciones inicio y fin.

  1. int inc = 0;
  2. int des = sPalabra.length()-1;
  3. boolean bError = false;

Además hemos declarado una variable que actuará en forma de guarda, por lo que inicialmente consideramos que no hemos encontrado incongruencias en la palabra.

Hay que fijarse que la posición inicial será 0 y la final, el ultimo carácter. Este valor lo conseguimos restandole 1 al tamaño de la cadena.

Ahora el bucle. Tenemos que iterar por la cadena mientras los contadores no se crucen y mientras no hayamos encontrado ningún error. De esta manera, el código del bucle quedará de la siguiente forma:

  1. while ((inc<des) && (!bError)){...}

Y dentro del bucle la validación de caracteres. Todo el código sería:

  1. while ((inc<des) && (!bError)){
  2.  
  3. if (sPalabra.charAt(inc)==sPalabra.charAt(des)){
  4. inc++;
  5. des--;
  6. } else {
  7. bError = true;
  8. }
  9. }

Vemos, que si algún par de caracteres no coinciden, entonces se cambia el valor de la variable de guarda, lo que hará que nos salgamos del bucle inmediatamente.

Una vez que hayamos salido del bucle, la variable de guarda nos dirá si la palabra es un palíndromo. Esto es si sigue con el valor inicial, es decir false.

  1. if (!bError)
  2. System.out.println(sPalabra + " es un PALINDROMO");
  3. else
  4. System.out.println(sPalabra + " NO es un palindromo");
Descargar el Codigo
Descargar el código
Error en el Codigo
Error en el código
tags: , , ,

Artículos relacionados:

30 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

1 2 3
  1. Linea de Codigo » Saber si un número es capicua con Java
    Septiembre 25, 2007 #

    [...] Una de las formas de saber si un número es capicua es pasándolo a una cadena y utilizando el código para detectar si la palabra es un palindromo. Para ello puedes leerte el artículo “Saber si una palabra es un palindromo con Java”. [...]

  2. Jesus
    Octubre 1, 2007 #

    Disculpa el ejemplo me marca error. Me lo marca en el codePointAt
    Me sale esto:

    Palindromo.java:30: cannot resolve symbol
    symbol : method codePointAt (int)
    location: class java.lang.String

    if (sPalabra.charAt(inc)==sPalabra.codePointAt(des)){
    ^
    1 error

    —-jGRASP wedge2: exit code for process is 1.
    —-jGRASP: operation complete.

  3. lineadecodigo
    Octubre 1, 2007 #

    Hola Jesús,

    Se ha colado una errata en el código. Realmente se tiene que comprobar con el método charAt en ambos casos.

    Ya he corregido el código.

    Muchas gracias.

  4. yover
    Octubre 16, 2007 #

    ingresar una frase y presentar en iniciales en mayusculas

  5. yover
    Octubre 16, 2007 #

    por favor quisiera saber si me pueden ayudar en este ejercicio
    ingresar una frase y presentar las iniciales en maysculas.
    graciasss.

  6. Kimberly Morales
    Noviembre 29, 2007 #

    necesito saber que codigo utilizar para crear palindromos

  7. unefa
    Junio 20, 2008 #

    import java.util.*;
    import java.io.*;

    class Palindrome
    {
    static String palabra;

    static public void main(String argv[])
    {
    try{

    Scanner archivo=new Scanner(new File(“test.txt”));

    while(archivo.hasNext())
    {
    palabra=archivo.next();

    System.out.println(palabra);
    if(palindrome(palabra))
    System.out.println(“si”);
    else
    System.out.println(“no”);

    }

    }
    catch(FileNotFoundException x)
    {
    }
    }

    static boolean palindrome(String x)
    {
    if(x.equals(reverse(x)))
    return true;
    else
    return false;
    }

    static String reverse(String x)
    {

    int n=x.length();
    char temp[]=new char[n];
    int z=n-1;

    for(int i=0; i<n; i++)
    {
    temp[i]=x.charAt(z);
    z–;

    }
    //System.out.println(“reverse:”+temp);
    return temp.toString();
    }
    }

    me podrian ayudar a resolver

  8. lidia
    Julio 28, 2008 #

    El link para descargar el archivo esta mal, se produce un error y me manda a una pagina :: “Vaya el link esta mal” corrigelo por favor.

  9. ITSZaS
    Septiembre 30, 2008 #

    Oigan cabe destacar que eso no esta muy claro a mi no me sirvio yo soy principiante y aun no se NADA, pero gracias de todos modos se agradece.

  10. roberto
    Octubre 9, 2008 #

    hola soy roberto quisiera que me ayudaran con el codigo en java del programa de la palabra palindrome es que la neta no e podido realizarlo espero me ayuden.Gracias

1 2 3

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*