Funcion para palindromo en .NET y C#

by ryudice on April 26, 2007

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

pali

Corregido el codigo gracias al comentario de Haggard

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Twitter

Related posts:

  1. Funcion fibonacci con recursion
  2. Funcion para exportar un DataTable a Excel(o CSV)

{ 10 comments… read them below or add one }

anita May 19, 2008 at 3:02 pm

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.

David August 9, 2008 at 7:43 pm

lo voy a probar gracias!

David August 9, 2008 at 7:57 pm

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?

David August 9, 2008 at 8:06 pm

si puse el using System;

drogo May 26, 2009 at 2:33 pm

solo dice si una sola palabra es palindromo, en caso de una frase no pasa nada

Taio May 31, 2009 at 2:34 pm

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

Paty July 4, 2009 at 4:50 pm

excelente
muchas gracias!!!
me sirvio demaciadoo!!!

un gran saludo!!!
:)

Paty July 4, 2009 at 5:07 pm

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!

Haggard23 August 14, 2009 at 2:41 am

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

Benito January 6, 2010 at 5:22 pm

Por q no lo hacen para modo grafico ¿? si alguien lo tiene q me lo pase porfa

Leave a Comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes