Vocales y Consonantes: FreeCodeCamp Daily Challenge

2 min

Introducción

En el reto diario de FreeCodeCamp, se nos pide analizar un string y determinar cuántas vocales y consonantes contiene. Este tipo de ejercicio es útil para practicar el manejo de cadenas, expresiones regulares y la lógica de conteo en JavaScript.

Enunciado del Problema

Dado un string, devuelve un array con el número de vocales y consonantes que contiene.

  • Las vocales son: a, e, i, o, u (mayúsculas y minúsculas)
  • Las consonantes son todas las letras del alfabeto que no son vocales (mayúsculas y minúsculas)
  • Los espacios y caracteres que no son letras no cuentan ni como vocales ni como consonantes

Ejemplo:

Input: "Hello World!"
Output: [3, 7] // 3 vocales (e, o, o) y 7 consonantes (H, l, l, W, r, l, d)

Enfoque y Análisis

La solución más eficiente utiliza expresiones regulares para identificar vocales y consonantes en el string. Esto permite buscar patrones de manera rápida y clara, evitando la necesidad de iterar manualmente por cada caracter.

Casos de Prueba

EntradaSalida Esperada
”Hello World!”[3, 7]
“JavaScript”[3, 7]
“Python”[1, 5]
“freeCodeCamp”[5, 7]
“Hello, World!”[3, 7]
“The quick brown fox jumps over the lazy dog.”[11, 24]

Solución

La función implementada en JavaScript es la siguiente:

function count(str) {
  const vowels = str.match(/[aeiou]/gi)
  const consonants = str.match(/[b-df-hj-np-tv-z]/gi)
  return [vowels ? vowels.length : 0, consonants ? consonants.length : 0]
}
  • Se definen dos expresiones regulares: una para vocales y otra para consonantes.
  • Se usa el método match() para encontrar todas las vocales y consonantes.
  • Se devuelve un array con los conteos respectivos.

Análisis de Complejidad

  • Complejidad temporal: O(n)O(n), donde nn es la longitud del string.
  • Complejidad espacial: O(k)O(k), donde kk es el número de coincidencias encontradas (vocales y consonantes).

Casos Edge y Consideraciones

  • String vacío: retorna [0, 0]
  • Solo símbolos o números: retorna [0, 0]
  • Mayúsculas y minúsculas se cuentan igual
  • Caracteres especiales y espacios se ignoran

Reflexiones y Aprendizajes

Este ejercicio refuerza el uso de expresiones regulares y el manejo de casos edge en cadenas. La solución es clara y eficiente para la mayoría de los casos prácticos.

Recursos


💡 La claridad y simplicidad en la solución suelen ser la mejor optimización para problemas de conteo.