Zurück zu den Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Eine gemeinsame Konfiguration

Simuliere ein Singleton-Objekt für Einstellungen: Jeder Teil des Programms liest und schreibt dieselbe Instanz.

Das lernst du

  • Ein Objekt im ganzen Programm teilen
  • Die Instanz beim ersten Zugriff erzeugen
  • Einstellungen an einer Stelle lesen und ändern

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 oder missing, 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

Beispiel 1
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"].

Beispiel 2
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.

Von anderen lernen

Community-Lösungen

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