Esta es una funcion para saber si una frase o palabra es un palindromo. Un palindromo es cualquier frase o palabra que al leerla al reves suena o se lee igual.
private bool EsPalindromo(String palabra)
{
palabra = palabra.Replace(” “,“”).ToLower();
char[] inversa =palabra.ToCharArray();
Array.Reverse(inversa);
string strInversa =new string(inversa);
return palabra ==strInversa;
}
Explicacion:
Bueno para empezar en la primera linea de codigo lo que hacemos es remover todos los espacios y hacer todo a minuscula para que no afecte el resultado.Luego convertimos la palabra a un array de char, esto lo hacemos con el proposito de invertir la palabra usando la funcion estatica Array.Reverse().Luego despues de haber invertido el array de chars lo convertimos a un string y lo almacenamos en strInversa. Noten que se usa el constructor de la clase String para convertirlo.Luego solo retornamos si la palabra al reves es igual a la original.
Hay formas mas complicadas de hacerlo, la ventaja de esta es que usamos las clases de .NET en vez de hacer lo que ya esta hecho.
Como Emplear la funcion
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Escriba una palabra: “);
Console.WriteLine((EsPalindromo(Console.ReadLine()))?“Si es palindromo”:“No es palindromo”);
Console.ReadLine();
}
public static bool EsPalindromo(String palabra)
{
palabra = palabra.Replace(” “, “”).ToLower();
char[] inversa = palabra.ToCharArray();
Array.Reverse(inversa);
string strInversa = new string(inversa);
return palabra == strInversa;
}
}
}
Resultado
Corregido el codigo gracias al comentario de Haggard
Related posts:

{ 10 comments… read them below or add one }
El código y la explicación me parecen excelentes, pero es poco interáctivo con el usuario, pienso mejor deletrear la palabra o frase para que la persona vea lo que escribió inversamente.
lo voy a probar gracias!
Tu programa no me salio, no se porque
lo que hice fue
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Escriba una palabra: “);
Console.WriteLine((EsPalindromo(c.ReadLine()))?“Si es palindromo”:“No es palindromo”);
Console.ReadLine();
}
public static bool EsPalindromo(String palabra)
{
palabra = palabra.Replace(” “, “”).ToLower();
char[] inversa = palabra.ToCharArray();
Array.Reverse(inversa);
string strInversa = new string(inversa);
return palabra == strInversa;
}
}
}
todo eso en un block
lo compile con csc nombre.cs
y me daba un error en public static bool EsPalindromo(String palabra)
porque tu string es String CON Mayus.
despues lo cambie y me dieron muchos errores, que me recomiendas?
si puse el using System;
solo dice si una sola palabra es palindromo, en caso de una frase no pasa nada
Como hago para saber si una frase es un palindromo…
ejemplo:
si tengo un arreglo asi:
string[] cadena={ “hola”, “soy”, “Taio”} // no es palindromo
string[] cadena2={ “hola”, “soy”, “hola”}// si es palindromo
Desde ya muchas gracias y espero que me saquen de la duda.
Saludos desde Uruguay
excelente
muchas gracias!!!
me sirvio demaciadoo!!!
un gran saludo!!!
me quedo una duda
Console.WriteLine((EsPalindromo(c.ReadLine()))?“Si es palindromo”:“No es palindromo”);
en esa linea que es lo que se hace exactamente
ok mandas iamar la funcion, i se escribe si es palindromo o no
lo que me saka mucho de onda es el signo de interrogacion (?) y los dos puntos(:) nunca he usado algo asi, asi ke no se a ke se refiera.
gracias!
hola a todos el programa como esta no se puede compilar bien, por que en la linea Console.WriteLine((EsPalindromo(c.ReadLine()))?“Si es palindromo”:“No es palindromo”);, en el compilador no reconoce “c.ReadLine()”, lo que se necesita es lo siguiente:
namespace Palindromo
{
class Program
{
static void Main(string[] args)
{
String c;
Console.WriteLine(“Escriba una palabra: “);
c = Console.ReadLine();
Console.WriteLine((EsPalindromo(c)) ? “Si es palindromo” : “No es palindromo”);
Console.ReadLine();
}
public static bool EsPalindromo(String palabra)
{
palabra = palabra.Replace(” “, “”).ToLower();
char[] inversa = palabra.ToCharArray();
Array.Reverse(inversa);
string strInversa = new string(inversa);
return palabra == strInversa;
}
}
Solo necesitan crear una variable String c, y despues guardarla en un Console.ReadLine().
Espero que les sirva esto nos vemos a todos bye
Por q no lo hacen para modo grafico ¿? si alguien lo tiene q me lo pase porfa