Einfach 0 gelöst 0% Erfolgsquote

Log-Level zählen

Lies die Zeilen einer Protokolldatei und zähle, wie viele davon INFO, WARNING und ERROR sind.

Das lernst du

  • Eine Datei Zeile für Zeile verarbeiten
  • Das erste Wort einer Zeile nehmen
  • Kategorien mit einer kleinen Strichliste zählen

Problem

Programme schreiben Protokolldateien mit genau einem Ereignis pro Zeile. Jede Zeile beginnt mit einem Level-Wort, gefolgt von einem Leerzeichen und einer Nachricht, zum Beispiel ERROR disk full.

Gegeben sind die Zeilen einer Protokolldatei. Zähle die Zeilen, deren erstes Wort genau INFO, WARNING oder ERROR ist. Zeilen, die mit etwas anderem beginnen (einschließlich kleingeschriebener Level), werden ignoriert.

Implementiere count_log_levels(lines).

Eingabe

lines: Die Zeilen der Datei, ohne Zeilenumbrüche.

Ausgabe

Gib [info_count, warning_count, error_count] zurück.

Einschränkungen

0 ≤ Anzahl der Zeilen ≤ 10,000

Jede Zeile hat höchstens 200 Zeichen

Beispiele

Beispiel 1
Eingabe:
lines = ["INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"]

Erwartete Ausgabe:
expected = [2, 1, 1]
Eingabe:
std::vector<std::string> lines = {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};

Erwartete Ausgabe:
std::vector<long long> expected = {2, 1, 1};
Eingabe:
string[] lines = new string[] {"INFO server started", "ERROR disk full", "INFO user login", "WARNING slow query"};

Erwartete Ausgabe:
long[] expected = new long[] {2, 1, 1};

Erläuterung

Zwei Zeilen beginnen mit INFO, eine mit WARNING und eine mit ERROR: [2, 1, 1].

Beispiel 2
Eingabe:
lines = ["info lowercase", "DEBUG details", "ERROR"]

Erwartete Ausgabe:
expected = [0, 0, 1]
Eingabe:
std::vector<std::string> lines = {"info lowercase", "DEBUG details", "ERROR"};

Erwartete Ausgabe:
std::vector<long long> expected = {0, 0, 1};
Eingabe:
string[] lines = new string[] {"info lowercase", "DEBUG details", "ERROR"};

Erwartete Ausgabe:
long[] expected = new long[] {0, 0, 1};

Erläuterung

"info" ist nicht "INFO", und DEBUG wird nicht gezählt. Die letzte Zeile ist nur das Wort ERROR, das zählt: [0, 0, 1].

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Nur das erste Wort jeder Zeile zählt.

Hinweis 2

Teile einmal am ersten Leerzeichen und vergleiche dieses Wort genau.

Hinweis 3

Groß- und Kleinschreibung zählt: "info" ist nicht "INFO", und eine Zeile kann nur aus dem Level-Wort bestehen.

Erwartete Komplexität

Zeit O(Gesamtlänge), zusätzlicher Speicher O(1)

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.