Problema
Programas escrevem arquivos de log com um evento por linha. Cada linha começa com uma palavra de nível seguida por um espaço e uma mensagem, por exemplo ERROR disk full.
Dadas as linhas de um arquivo de log, conte as linhas cujo primeiro termo é exatamente INFO, WARNING ou ERROR. Linhas que começam com qualquer outra coisa (incluindo níveis em minúsculas) são ignoradas.
Implemente count_log_levels(lines).
Input
lines: As linhas do arquivo, sem quebras de linha.
Output
Retorne [info_count, warning_count, error_count].
Restrições
0 ≤ número de linhas ≤ 10,000
Cada linha tem no máximo 200 caracteres
Exemplos
Entrada:
lines = ["INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"]
Saída esperada:
expected = [2, 1, 1]
Entrada:
std::vector<std::string> lines = {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
Saída 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"};
Saída esperada:
long[] expected = new long[] {2, 1, 1};
Explicação
Duas linhas começam com INFO, uma com WARNING e uma com ERROR: [2, 1, 1].
Entrada:
lines = ["info lowercase", "DEBUG details", "ERROR"]
Saída esperada:
expected = [0, 0, 1]
Entrada:
std::vector<std::string> lines = {"info lowercase", "DEBUG details", "ERROR"};
Saída esperada:
std::vector<long long> expected = {0, 0, 1};
Entrada:
string[] lines = new string[] {"info lowercase", "DEBUG details", "ERROR"};
Saída esperada:
long[] expected = new long[] {0, 0, 1};
Explicação
"info" não é "INFO" e DEBUG não é contado. A última linha é apenas a palavra ERROR, que conta: [0, 0, 1].
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Só a primeira palavra de cada linha importa.
Dica 2
Divida uma única vez no primeiro espaço e compare essa palavra exatamente.
Dica 3
Maiúsculas importam: "info" não é "INFO", e uma linha pode ter só a palavra do nível.
Complexidade esperada
tempo O(comprimento total), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.