Problem
Das singleton-Muster stellt sicher, dass eine Klasse genau eine Instanz hat, die sich alle teilen, eine gängige Wahl für Anwendungseinstellungen.
Simuliere eine gemeinsame Konfiguration, die leer beginnt. Verarbeite die Operationen der Reihe nach:
set <key> <value>: speichere den Wert für den Schlüssel (und ersetze jeden alten Wert).get <key>: lies den aktuellen Wert des Schlüssels odermissing, wenn er nie gesetzt wurde.
Da jeder Aufrufer dieselbe Instanz verwendet, ist ein Wert, der durch eine Operation gesetzt wurde, für jedes spätere get sichtbar.
Implementiere shared_configuration(operations).
Input
operations: Strings in den beiden Formen oben. Schlüssel und Werte enthalten keine Leerzeichen.
Output
Gib die Ergebnisse der get-Operationen in Reihenfolge zurück.
Einschränkungen
1 ≤ Anzahl der Operationen ≤ 10,000
Schlüssel und Werte haben 1 bis 20 Zeichen
Beispiele
Eingabe:
operations = ["set theme dark", "get theme", "get language"]
Erwartete Ausgabe:
expected = ["dark", "missing"]
Eingabe:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};
Erwartete Ausgabe:
std::vector<std::string> expected = {"dark", "missing"};
Eingabe:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};
Erwartete Ausgabe:
string[] expected = new string[] {"dark", "missing"};
Erläuterung
theme wurde auf dark gesetzt; language wurde nie gesetzt, also ist es missing: ["dark", "missing"].
Eingabe:
operations = ["set lang en", "set lang vi", "get lang"]
Erwartete Ausgabe:
expected = ["vi"]
Eingabe:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};
Erwartete Ausgabe:
std::vector<std::string> expected = {"vi"};
Eingabe:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};
Erwartete Ausgabe:
string[] expected = new string[] {"vi"};
Erläuterung
Das zweite set ersetzt den ersten Wert in derselben gemeinsamen Instanz: ["vi"].
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Alle Operationen lesen und schreiben dasselbe einzelne Objekt.
Hinweis 2
Ein Dictionary von Schlüssel zu Wert reicht für die Einstellungen.
Hinweis 3
Ein nie gesetzter Schlüssel muss den Text missing liefern.
Erwartete Komplexität
Zeit O(Anzahl der Operationen), zusätzlicher Speicher O(Anzahl der Schlüssel)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.