Problema
O padrão singleton garante que uma classe tenha exatamente uma instância compartilhada por todos, uma escolha comum para configurações de aplicações.
Simule uma configuração compartilhada que começa vazia. Processe as operações em ordem:
set <key> <value>: armazene o valor para a chave (substituindo qualquer valor antigo).get <key>: leia o valor atual da chave, oumissingse ela nunca tiver sido definida.
Como cada chamada usa a mesma instância, um valor definido por uma operação fica visível para todo get posterior.
Implemente shared_configuration(operations).
Entrada
operations: Strings nas duas formas acima. Chaves e valores não contêm espaços.
Saída
Retorne os resultados das operações get, em ordem.
Restrições
1 ≤ número de operações ≤ 10,000
Chaves e valores têm de 1 a 20 caracteres
Exemplos
Entrada:
operations = ["set theme dark", "get theme", "get language"]
Saída esperada:
expected = ["dark", "missing"]
Entrada:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};
Saída esperada:
std::vector<std::string> expected = {"dark", "missing"};
Entrada:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};
Saída esperada:
string[] expected = new string[] {"dark", "missing"};
Explicação
theme foi definido como dark; language nunca foi definido, então está missing: ["dark", "missing"].
Entrada:
operations = ["set lang en", "set lang vi", "get lang"]
Saída esperada:
expected = ["vi"]
Entrada:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};
Saída esperada:
std::vector<std::string> expected = {"vi"};
Entrada:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};
Saída esperada:
string[] expected = new string[] {"vi"};
Explicação
O segundo set substitui o primeiro valor na mesma instância compartilhada: ["vi"].
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Todas as operações leem e escrevem o mesmo objeto único.
Dica 2
Um dicionário de chave para valor basta para guardar as configurações.
Dica 3
Uma chave nunca definida deve retornar o texto missing.
Complexidade esperada
tempo O(número de operações), espaço extra O(número de chaves)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.