Tutte le sfide
Facile 0 risolte 0% di accettazione

Un'unica configurazione condivisa

Simula un oggetto di impostazioni singleton: ogni parte del programma legge e scrive la stessa istanza.

Cosa imparerai

  • Condividere un solo oggetto in tutto il programma
  • Creare l'istanza al primo utilizzo
  • Leggere e aggiornare le impostazioni da un unico punto

Problema

Il pattern singleton garantisce che una classe abbia esattamente una istanza condivisa da tutti, una scelta comune per le impostazioni dell'applicazione.

Simula una configurazione condivisa che inizia vuota. Elabora le operazioni in ordine:

  • set <key> <value>: memorizza il valore per la chiave (sostituendo qualsiasi vecchio valore).
  • get <key>: legge il valore attuale della chiave, oppure missing se non è mai stata impostata.

Poiché ogni chiamante usa la stessa istanza, un valore impostato da un'operazione è visibile a ogni get successivo.

Implementa shared_configuration(operations).

Ingresso

operations: Stringhe nelle due forme sopra. Chiavi e valori non contengono spazi.

Uscita

Restituisci i risultati delle operazioni get, in ordine.

Vincoli

1 ≤ numero di operazioni ≤ 10,000

Chiavi e valori hanno da 1 a 20 caratteri

Esempi

Esempio 1
Input:
operations = ["set theme dark", "get theme", "get language"]

Output atteso:
expected = ["dark", "missing"]
Input:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};

Output atteso:
std::vector<std::string> expected = {"dark", "missing"};
Input:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};

Output atteso:
string[] expected = new string[] {"dark", "missing"};

Spiegazione

theme è stato impostato su dark; language non è mai stato impostato, quindi è missing: ["dark", "missing"].

Esempio 2
Input:
operations = ["set lang en", "set lang vi", "get lang"]

Output atteso:
expected = ["vi"]
Input:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};

Output atteso:
std::vector<std::string> expected = {"vi"};
Input:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};

Output atteso:
string[] expected = new string[] {"vi"};

Spiegazione

Il secondo set sostituisce il primo valore nella stessa istanza condivisa: ["vi"].

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Tutte le operazioni leggono e scrivono lo stesso unico oggetto.

Suggerimento 2

Un dizionario da chiave a valore basta per le impostazioni.

Suggerimento 3

Una chiave mai impostata deve restituire il testo missing.

Complessità attesa

tempo O(numero di operazioni), spazio aggiuntivo O(numero di chiavi)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.