Problème
Le modèle singleton garantit qu'une classe n'a exactement qu'une seule instance partagée par tout le monde, un choix courant pour les paramètres d'une application.
Simulez une configuration partagée unique qui commence vide. Traitez les opérations dans l'ordre :
set <key> <value>: stocke la valeur pour la clé (en remplaçant toute ancienne valeur).get <key>: lit la valeur actuelle de la clé, oumissingsi elle n'a jamais été définie.
Comme chaque appelant utilise la même instance, une valeur définie par une opération est visible par tout get ultérieur.
Implémentez shared_configuration(operations).
Entrée
operations: Chaînes sous les deux formes ci-dessus. Les clés et les valeurs ne contiennent pas d'espaces.
Sortie
Retournez les résultats des opérations get, dans l'ordre.
Contraintes
1 ≤ nombre d'opérations ≤ 10,000
Les clés et valeurs ont de 1 à 20 caractères
Exemples
Entrée :
operations = ["set theme dark", "get theme", "get language"]
Sortie attendue :
expected = ["dark", "missing"]
Entrée :
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};
Sortie attendue :
std::vector<std::string> expected = {"dark", "missing"};
Entrée :
string[] operations = new string[] {"set theme dark", "get theme", "get language"};
Sortie attendue :
string[] expected = new string[] {"dark", "missing"};
Explication
theme a été défini sur dark ; language n'a jamais été défini, donc il est missing : ["dark", "missing"].
Entrée :
operations = ["set lang en", "set lang vi", "get lang"]
Sortie attendue :
expected = ["vi"]
Entrée :
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};
Sortie attendue :
std::vector<std::string> expected = {"vi"};
Entrée :
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};
Sortie attendue :
string[] expected = new string[] {"vi"};
Explication
Le deuxième set remplace la première valeur dans la même instance partagée : ["vi"].
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Toutes les opérations lisent et écrivent le même objet unique.
Indice 2
Un dictionnaire de clé à valeur suffit pour stocker les réglages.
Indice 3
Une clé jamais définie doit renvoyer le texte missing.
Complexité attendue
temps O(nombre d'opérations), espace supplémentaire O(nombre de clés)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.