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
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].
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.