Problem
Zähle jedes Zeichen in text außer Leerzeichen. Gib jedes unterschiedliche Zeichen genau einmal als "Zeichen:Anzahl" aus, sortiert nach dem Zeichencode (Großbuchstaben kommen also vor Kleinbuchstaben).
Implementiere character_frequency(text).
Eingabe
text: Der zu zählende Text (ASCII-Zeichen).
Ausgabe
Gib die Liste der "Zeichen:Anzahl"-Einträge zurück.
Einschränkungen
0 ≤ Länge ≤ 10.000
Beispiele
Eingabe:
text = "hello"
Erwartete Ausgabe:
expected = ["e:1", "h:1", "l:2", "o:1"]
Eingabe:
std::string text = "hello";
Erwartete Ausgabe:
std::vector<std::string> expected = {"e:1", "h:1", "l:2", "o:1"};
Eingabe:
string text = "hello";
Erwartete Ausgabe:
string[] expected = new string[] {"e:1", "h:1", "l:2", "o:1"};
Erläuterung
e:1, h:1, l:2, o:1 sortiert nach Zeichen: ["e:1", "h:1", "l:2", "o:1"].
Eingabe:
text = "a a A"
Erwartete Ausgabe:
expected = ["A:1", "a:2"]
Eingabe:
std::string text = "a a A";
Erwartete Ausgabe:
std::vector<std::string> expected = {"A:1", "a:2"};
Eingabe:
string text = "a a A";
Erwartete Ausgabe:
string[] expected = new string[] {"A:1", "a:2"};
Erläuterung
Leerzeichen werden übersprungen; "A" kommt vor "a": ["A:1", "a:2"].
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Überspringe Leerzeichen, aber zähle jedes andere ASCII-Zeichen genau so, wie es erscheint.
Hinweis 2
Sammle die Zähler in einer Häufigkeitstabelle und gib dann jedes Zeichen nur einmal aus.
Hinweis 3
Sortiere nach Zeichencode, damit die Reihenfolge von Groß- und Kleinbuchstaben natürlich der ASCII-Reihenfolge folgt.
Erwartete Komplexität
Zeit O(n + m log m), zusätzlicher Speicher O(m)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.