Recursión: primer índice de repetición
Crea una función recursiva que identifique el primer elemento que se haya repetido en el argumento de cadena proporcionado. Devuelve el elemento identificado con el índice donde apareció por primera vez y el índice siguiente donde volvió a aparecer, todo ello como un objeto; o un objeto vacío si el argumento proporcionado es null, undefined, una cadena vacía o no existe ningún elemento repetido.
Ejemplos
recurIndex("KDXTDATTDD") ➞ {"D": [1, 4]}
// D first appeared at index 1, resurfaced at index 4
// though D resurfaced yet again at index 8, it's no longer significant
// T appeared and resurfaced at indices 3 and 6 but D completed the cycle first
recurIndex("AKEDCBERSD") ➞ {"E": [2, 6]}
recurIndex("DXKETRETXD") ➞ {"E": [3, 6]}
recurIndex("ABCKPEPGBC") ➞ {"P": [4, 6]}
recurIndex("ABCDEFGHIJ") ➞ {}
recurIndex(undefined) ➞ {}Notas
- Se espera que quienes realizan el desafío ideen una solución usando el concepto de recursión o el llamado enfoque recursivo.
- Puedes leer más sobre la recursión (consulta la pestaña Resources) si todavía no estás familiarizado con ella, si no has comprendido completamente el concepto antes de realizar este desafío o si necesitas más información.
- No habrá excepciones que manejar; todas las entradas son cadenas y objetos similares a cadenas. Solo debes tener especial cuidado con las entradas
null,undefinedy la cadena vacía para evitar un Uncaught RangeError o exceder el tamaño máximo de llamadas de la pila. - Puedes encontrar aquí una versión no recursiva de este desafío.
- Si crees que la recursión es divertida, puedes encontrar aquí una colección de estos desafíos.