En esta ocasión abordaremos un algoritmo muy conocido y muchas veces tomado en cuenta en los live coding, podrás pensar, qué fácil es! Y yo te diría sí y no. Me explico, los live coding no son como muchos piensan: tediosas sesiones de 3 horas y un equipo completo de ingeniería con lupa en mano analizando cada movimiento que haces.
La realidad es que a ningún equipo de ingeniería le sobra el tiempo y muchas veces los algoritmos que te proponen resolver son sencillos, pero significativos, ellos más que ver que seas un as del algoritmo, lo que quieren comprobar es cómo haces frente a situaciones de estrés, qué estilo de código tienes, si manejas un nivel estándar de código mínimamente aceptable y si cumples con lo más valioso en un trabajo real: Resuelves problemas, das soluciones y no problemas.
Con esto no digo que todos los tests de código en vivo sean sencillos, sin embargo, una gran mayoría no se te pedirá algo súper complejo sino más bien un ejercicio común pero ingenioso, que no debes ser un genio para resolverlo, pero sí deberás estar "en forma", es decir que seas un developer activo, y que si tocas código a diario, seguro lo podrás hacer.
En ese sentido, comencemos 😊
Enunciado
Dado un texto, quitar los espacios duplicados que contenga.
Algoritmo
- Declaramos dos variables: un string response donde iremos formando el texto corregido y un booleano llamado space que nos indique que acabamos de pasar por un espacio, lo seteamos en false.
- Iteramos por cada caracter del texto
- Si encontramos un espacio y previamente no hemos pasado por un espacio, entonces lo añadimos a response y seteamos space a true.
- Si no es un espacio entonces lo añadimos de frente a response y seteamos space a false.
- Retornamos response.
Código
Todo muy bonito con el pseudo-código pero ahora veamos en código 😊
public static string Run(string frase)
{
string response = "";
bool space = false;
foreach(var caracter in frase)
{
if(caracter == ' ')
{
if (!space)
response += caracter;
space = true;
}
else
{
response += caracter;
space = false;
}
}
return response;
}
Lo pongo a prueba:
Y obtengo:
Genial, funciona y eso es lo importante. 😉
Recuerda que esta entrada es de la serie de artículos Algoritmos notables, los cuales los subo a este repo, puedes visitarlo y descubrir más algoritmos 😊
Si esta entrada te ha gustado, y espero que así sea, entonces compártela 🥳