Problème
Les programmes écrivent des fichiers de log avec un événement par ligne. Chaque ligne commence par un mot de niveau, suivi d'un espace et d'un message, par exemple ERROR disk full.
Étant donné les lignes d'un fichier de log, comptez les lignes dont le premier mot est exactement INFO, WARNING ou ERROR. Les lignes qui commencent par autre chose (y compris des niveaux en minuscules) sont ignorées.
Implémentez count_log_levels(lines).
Input
lines: Les lignes du fichier, sans les sauts de ligne.
Output
Retournez [info_count, warning_count, error_count].
Contraintes
0 ≤ nombre de lignes ≤ 10,000
Chaque ligne a au plus 200 caractères
Exemples
Entrée :
lines = ["INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"]
Sortie attendue :
expected = [2, 1, 1]
Entrée :
std::vector<std::string> lines = {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
Sortie attendue :
std::vector<long long> expected = {2, 1, 1};
Entrée :
string[] lines = new string[] {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};
Sortie attendue :
long[] expected = new long[] {2, 1, 1};
Explication
Deux lignes commencent par INFO, une par WARNING et une par ERROR : [2, 1, 1].
Entrée :
lines = ["info lowercase", "DEBUG details", "ERROR"]
Sortie attendue :
expected = [0, 0, 1]
Entrée :
std::vector<std::string> lines = {"info lowercase", "DEBUG details", "ERROR"};
Sortie attendue :
std::vector<long long> expected = {0, 0, 1};
Entrée :
string[] lines = new string[] {"info lowercase", "DEBUG details", "ERROR"};
Sortie attendue :
long[] expected = new long[] {0, 0, 1};
Explication
"info" n'est pas "INFO" et DEBUG n'est pas compté. La dernière ligne est juste le mot ERROR, qui compte : [0, 0, 1].
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Seul le premier mot de chaque ligne compte.
Indice 2
Coupez une seule fois au premier espace et comparez ce mot exactement.
Indice 3
La casse compte : "info" n'est pas "INFO", et une ligne peut ne contenir que le mot du niveau.
Complexité attendue
temps O(longueur totale), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.