Solución

@isakidev·11/5/2026TypeScript
solution.tsTypeScript
function mostFrequentChar(text: string): string {
  const counts: Record<string, number> = {}

  let maxCount = 0

  for (const char of text) {
    counts[char] = (counts[char] ?? 0) + 1
    maxCount = Math.max(maxCount, counts[char])
  }

  for (const char of text) {
    if (counts[char] === maxCount) {
      return char
    }
  }

  return ''
}
2respuestas
Respuestas
@arkzado15/5/2026editado

Hola isaki, me gustaría hacerte un par de observaciones, aunque tu código es funcional para pasar el test de la prueba, hay un detalle que se puede pulir y otro que te haría perder en otro escenario, primero mencionarte el detalle que se puede pulir, en la linea characters[char] = (characters[char] ?? 1) + 1 básicamente estás diciendo "si este carácter existe, sumale 1 al valor que ya tenías guardado anteriormente, pero si no existe inicialízala en 1 y sumale 1, cosa que nada más empezar, ya se habrían contabilizado 2 caracteres por ende, todos los caracteres estarían mal contadas, si quieres lo puedes verificar con un console.log(). Ahora lo que te podría generar error es que estás usando un solo bucle y actualizando en caliente en el bloque:

if (characters[char] > maxCount) {
      maxCount = characters[char]
      mostFrequentChar = char
    }

en pocas palabras le estás diciendo "yo ya tengo una variable con el máximo de caracteres, actualizala si el carácter actual supera dicha cifra", de manera rápida se podría pensar que de eso se trata el ejercicio, traer el carácter que más se repite, pero hay un detalle y es que dice que en caso de empate, se debe mostrar el primero que aparece en el texto, entonces te daré un ejemplo, el texto es "baab", ¿que crees que pasará?, lo que pasará es que la letra "a" llegará primero al máximo de caracteres y luego el b lo alcanza, pero como el 2 no es mayor a 2, entonces la letra con más caracteres seguirá siendo la "a", aunque el resultado debería ser "b", porque fue la primera en aparece en el texto, espero te sirva mi comentario.

@isakidevAutor15/5/2026

@arkzado Bien visto! Me faltó colocar el 0 en vez del 1 jajaja.

Y sobre el segundo caso, creo que me confie al pasar todos los tests 😅, pero probando con el input que compartiste (baab) tienes razon, deberia retornar b.

Le hice un cambio agregando otro loop y ahora funciona correctamente, aunque todavia no me termina de convencer mucho el parche jaja.

Gracias por las observaciones! Se agradecen 🔥

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.