Voltar para os desafios
Fácil 0 resolvidos 0% de aceitação

Uma configuração compartilhada

Simule um objeto de configurações singleton: cada parte do programa lê e escreve a mesma instância.

O que você vai aprender

  • Compartilhar um único objeto em todo o programa
  • Criar a instância no primeiro uso
  • Ler e atualizar configurações em um só lugar

Problema

Ver original (inglês)

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, ou missing se 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

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

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

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.