Паттерн singleton гарантирует, что у класса есть ровно один экземпляр, которым все пользуются; это распространённый выбор для настроек приложения.
Смоделируйте одну общую конфигурацию, которая изначально пуста. Обрабатывайте операции по порядку:
set <key> <value>: сохраните значение для ключа (заменяя любое старое значение).get <key>: прочитайте текущее значение ключа илиmissing, если оно никогда не было задано.
Поскольку каждый вызывающий использует один и тот же экземпляр, значение, заданное одной операцией, видно во всех последующих get.
Реализуйте shared_configuration(operations).
Input
operations: Строки в двух формах выше. Ключи и значения не содержат пробелов.
Output
Верните результаты операций get в порядке их выполнения.
Ограничения
1 ≤ число операций ≤ 10,000
Ключи и значения длиной от 1 до 20 символов
Примеры
Ввод:
operations = ["set theme dark", "get theme", "get language"]
Ожидаемый вывод:
expected = ["dark", "missing"]
Ввод:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};
Ожидаемый вывод:
std::vector<std::string> expected = {"dark", "missing"};
Ввод:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};
Ожидаемый вывод:
string[] expected = new string[] {"dark", "missing"};
Пояснение
theme задан как dark; language не задавался, поэтому missing: ["dark", "missing"].
Ввод:
operations = ["set lang en", "set lang vi", "get lang"]
Ожидаемый вывод:
expected = ["vi"]
Ввод:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};
Ожидаемый вывод:
std::vector<std::string> expected = {"vi"};
Ввод:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};
Ожидаемый вывод:
string[] expected = new string[] {"vi"};
Пояснение
Второй set заменяет первое значение в том же общем экземпляре: ["vi"].
Как подступиться
Сначала попробуйте сами, затем открывайте подсказки по одной.
Подсказка 1
Все операции читают и пишут один и тот же объект.
Подсказка 2
Для настроек достаточно словаря из ключа в значение.
Подсказка 3
Для ключа, который ни разу не задавался, нужно вернуть текст missing.
Ожидаемая сложность
время O(число операций), доп. память O(число ключей)
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.