En una entrevista de trabajo me pidieron realizar la siguiente actividad: "Desarrollar una función la cual recibirá un string, analizarlo y tratar de convertirlo a palindrome". No precisamente el string estará en el mismo orden, por ejemplo, la función puede recibir -> SSUUG la cual en su versión palindrome sería SUGUS.
Introducción
El error que cometí fue el estar pensando en el detalle de las posibles combinaciones, en mi mente estaba:
Posibilidades de crear una palabra palindrome dependiendo su longitud
2 -> 2
3 -> 2-1
4 -> 4, 2-2
5 -> 2-2-1
6 -> 6, 4-2, 2-2-2
7 -> 6-1, 4-2-1, 2-2-2-1
8 -> 8, 6-2, 4-4, 4-2-2, 2-2-2-2
9 -> 8-1, 6-2-1, 4-4-1, 4-2-2-1, 2-2-2-2-1
10 -> 10, 8-2, 6-4, 4-4-2, 4-2-2-2-2, 2-2-2-2-2
Por lo que después de haber creado la función en base a la lógica más complicada, pensé en lo que el entrevistador me dijo al final: "Solo puede haber un fallo".
En efecto, las letras se deben presentar en pares y si se tiene 2 letras individuales diferentes, no es posible convertirla a palindrome.
Solución
La solución queda detallada de la siguiente forma:
1.- Crear un array con las letras únicas y las veces en que se repite (desde aquí se puede hacer la validación de palindrome pero yo decidí hacerlo en el paso #2).
2.- Imprimir las palabras del array en forma palindrome.
El código en javascript se ve así:
Y aquí un pequeño demo:
No comments:
Post a Comment