Java » Saber si una palabra es un palíndromo con Java
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.
int inc = 0; int des = sPalabra.length()-1; 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:
while ((inc<des) && (!bError)){...}
Y dentro del bucle la validación de caracteres. Todo el código sería:
while ((inc<des) && (!bError)){ if (sPalabra.charAt(inc)==sPalabra.charAt(des)){ inc++; des--; } else { bError = true; } }
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.
if (!bError) else
![]() Descargar el código |
![]() Error en el código |
Artículos relacionados:








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”. [...]
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.
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.
Octubre 16, 2007 #
ingresar una frase y presentar en iniciales en mayusculas
Octubre 16, 2007 #
por favor quisiera saber si me pueden ayudar en este ejercicio
ingresar una frase y presentar las iniciales en maysculas.
graciasss.
Noviembre 29, 2007 #
necesito saber que codigo utilizar para crear palindromos
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
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.
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.
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