Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Một cấu hình dùng chung

Mô phỏng một đối tượng thiết lập singleton: mọi phần của chương trình đều đọc và ghi cùng một thể hiện.

Bạn sẽ học được gì

  • Dùng chung một đối tượng cho toàn chương trình
  • Tạo instance khi dùng lần đầu
  • Đọc và cập nhật cấu hình qua một nơi duy nhất

Đề bài

Xem bản gốc (English)

Mẫu singleton đảm bảo một lớp chỉ có đúng một thể hiện mà mọi người cùng dùng chung, một lựa chọn phổ biến cho thiết lập ứng dụng.

Hãy mô phỏng một cấu hình dùng chung bắt đầu rỗng. Xử lý các thao tác theo thứ tự:

  • set <key> <value>: lưu giá trị cho khóa (thay thế mọi giá trị cũ).
  • get <key>: đọc giá trị hiện tại của khóa, hoặc missing nếu khóa đó chưa từng được đặt.

Vì mọi lời gọi đều dùng cùng một thể hiện, nên giá trị do một thao tác đặt ra sẽ hiển thị với mọi get ở sau đó.

Hãy cài đặt shared_configuration(operations).

Input

operations: Các chuỗi theo hai dạng ở trên. Khóa và giá trị không chứa khoảng trắng.

Output

Trả về kết quả của các thao tác get, theo thứ tự.

Ràng buộc

1 ≤ số thao tác ≤ 10,000

Khóa và giá trị dài 1 đến 20 ký tự

Ví dụ

Ví dụ 1
Đầu vào:
operations = ["set theme dark", "get theme", "get language"]

Kết quả mong đợi:
expected = ["dark", "missing"]
Đầu vào:
std::vector<std::string> operations = {"set theme dark", "get theme", "get language"};

Kết quả mong đợi:
std::vector<std::string> expected = {"dark", "missing"};
Đầu vào:
string[] operations = new string[] {"set theme dark", "get theme", "get language"};

Kết quả mong đợi:
string[] expected = new string[] {"dark", "missing"};

Giải thích

theme được đặt là dark; language chưa bao giờ được đặt nên là missing: ["dark", "missing"].

Ví dụ 2
Đầu vào:
operations = ["set lang en", "set lang vi", "get lang"]

Kết quả mong đợi:
expected = ["vi"]
Đầu vào:
std::vector<std::string> operations = {"set lang en", "set lang vi", "get lang"};

Kết quả mong đợi:
std::vector<std::string> expected = {"vi"};
Đầu vào:
string[] operations = new string[] {"set lang en", "set lang vi", "get lang"};

Kết quả mong đợi:
string[] expected = new string[] {"vi"};

Giải thích

Lệnh set thứ hai thay giá trị đầu tiên trong cùng một instance dùng chung: ["vi"].

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Mọi thao tác đều đọc và ghi cùng một đối tượng duy nhất.

Gợi ý 2

Một dictionary từ khóa sang giá trị là đủ để lưu cấu hình.

Gợi ý 3

Khóa chưa từng được đặt phải trả về chữ missing.

Độ phức tạp mong đợi

thời gian O(số thao tác), bộ nhớ phụ O(số khóa)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.