Problema
Los programas escriben archivos de registro con un evento por línea. Cada línea empieza con una palabra de nivel seguida de un espacio y un mensaje, por ejemplo ERROR disk full.
Dadas las líneas de un archivo de registro, cuenta las líneas cuyo primer palabra es exactamente INFO, WARNING o ERROR. Las líneas que empiezan con cualquier otra cosa (incluidos los niveles en minúsculas) se ignoran.
Implementa count_log_levels(lines).
Entrada
lines: Las líneas del archivo, sin saltos de línea.
Salida
Devuelve [info_count, warning_count, error_count].
Restricciones
0 ≤ número de líneas ≤ 10,000
Cada línea tiene como máximo 200 caracteres
Ejemplos
Entrada:
lines = ["INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"]
Salida esperada:
expected = [2, 1, 1]
Entrada:
std::vector<std::string> lines = {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
Salida esperada:
std::vector<long long> expected = {2, 1, 1};
Entrada:
string[] lines = new string[] {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
Salida esperada:
long[] expected = new long[] {2, 1, 1};
Explicación
Dos líneas empiezan con INFO, una con WARNING y una con ERROR: [2, 1, 1].
Entrada:
lines = ["info lowercase", "DEBUG details", "ERROR"]
Salida esperada:
expected = [0, 0, 1]
Entrada:
std::vector<std::string> lines = {"info lowercase", "DEBUG details", "ERROR"};
Salida esperada:
std::vector<long long> expected = {0, 0, 1};
Entrada:
string[] lines = new string[] {"info lowercase", "DEBUG details", "ERROR"};
Salida esperada:
long[] expected = new long[] {0, 0, 1};
Explicación
"info" no es "INFO" y DEBUG no se cuenta. La última línea es solo la palabra ERROR, que sí cuenta: [0, 0, 1].
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Solo importa la primera palabra de cada línea.
Pista 2
Divide una sola vez en el primer espacio y compara esa palabra exactamente.
Pista 3
Las mayúsculas importan: "info" no es "INFO", y una línea puede ser solo la palabra del nivel.
Complejidad esperada
tiempo O(longitud total), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.