Você está na página 1de 3

Estos son algunos ejemplos para que vean que en la

programacin hay muchas formas de hacer las cosas,


aunque siempre hay una que es la ms eficiente, aunque
casi nunca es muy evidente.
Veamos como invertir un string de tres formas distintas.
Por ejemplo, si tenemos el string puntopeek, el mtodo
devolvera keepotnup.
Veamos el primer ejemplo, es el que casi todos
conocemos, y es muy fcil de implementar, vamos
recorriendo la palabra desde el ultimo caracter hasta el
primero y vamos guardando cada letra en un nuevo string,
que es el que devolver el mtodo. El cdigo sera algo
as:
public string Invertir(string s)
{
string aux = "";
//Recorremos el string en orden inverso
for (int i = s.Length - 1; i >= 0; i--)
aux += s[i];
//retornamos la nueva cadena
return aux;
}

Otra opcin (pero hay que conocer que es una pila), es ir


guardando cada letra en una pila (stack), y luego cuando
esten todas las letras las sacamos de la pila. Noten que
en esta estructura, el primer elemento que entra, es el
ltimo en salir, por eso nos sirve tambin para invertir un
string. El cdigo sera este:
public string Invertir2(string s)
{
//Declaramos una pila usando genericidad.

//Esto se puede hacer con el framework 2.0


Stack stack = new Stack();
//Recorremos el string y vamos metiendo en la pila
//cada caracter
for (int i = 0; i < s.Length; i++)
stack.Push(s[i]);
string aux = "";
//Vamos sacando de la pila los caracteres y los
//ponemos uno a uno en un nuevo string
for (int i = 0; i < s.Length; i++)
aux += stack.Pop();
return aux;
}

Ahora veremos la versin recursiva del problema. Si lo


analizan paso a paso, vern que hace practicamente lo
mismo que Invertir2. Como vern, este mtodo no
necesita almacenar ningun caracter, ni copiar, la
recursividad se encarga de todo. En realidad la
recursividad funciona como una pila (Invertir2) pero no
hay que declarar variables ni nada de eso. A veces
algunos mtodos recursivos parecen mgicos, pero una
vez dominemos esta tcnica dominaremos el arte de
programar. Al menos lo esencial. Veamos el cdigo:
public string Invertir3 (string s, int lenght)
//El parametro lenght es el tamao del string s
{
//Condicion de parada
if (lenght == 1)
return s;
else
//Llamado recursivo
return Invertir3 (s.Substring(1, s.Length - 1), lenght - 1)
+ s[0].ToString();
}

Para que se den cuenta de lo que hace el mtodo, es


necesario que le hagan un debug paso a paso, y vayan
viendo como se transforman las variables locales. Si
tienen alguna otra solucin de como Invertir un string

pueden ponerla en los comentarios. Y hasta aqu este


post, espero escribir un poco ms seguido, pero estoy con
muchos proyectos en la universidad y mucho trabajo. Han
oido hablar del WinZip o el WinRar? Proximamente
estaremos hablando del Algoritmo de Huffman, que se
utiliza mucho en el compactacin de texto y archivos.

Compartir:

Você também pode gostar