Đề bài
JSON là định dạng văn bản mà hầu hết chương trình dùng để trao đổi dữ liệu. Một đối tượng JSON được viết là {"key": "value", ...}.
Cho hai danh sách khóa và giá trị tương ứng (đều là văn bản), hãy tạo chuỗi đối tượng JSON theo đúng định dạng sau:
- Bắt đầu bằng
{và kết thúc bằng}. - Viết mỗi cặp dưới dạng
"key": "value", theo đúng thứ tự đã cho, ngăn cách bởi,(dấu phẩy và một khoảng trắng). - Bên trong chuỗi, hãy viết dấu gạch chéo ngược
\thành\\và dấu ngoặc kép"thành\". Các ký tự khác giữ nguyên như cũ.
Implement json_object_string(keys, values).
Đầu vào
keys, values: Các danh sách có cùng độ dài.
Đầu ra
Trả về chuỗi JSON. Một đối tượng rỗng là {}.
Ràng buộc
0 ≤ số cặp ≤ 100
Khóa và giá trị có tối đa 50 ký tự in được
Ví dụ
Đầu vào:
keys = ["name", "city"]
values = ["Ada", "London"]
Kết quả mong đợi:
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Đầu vào:
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};
Kết quả mong đợi:
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Đầu vào:
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};
Kết quả mong đợi:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Giải thích
Mỗi cặp trở thành "key": "value": {"name": "Ada", "city": "London"}.
Đầu vào:
keys = ["quote"]
values = ["say \"hi\""]
Kết quả mong đợi:
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Đầu vào:
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};
Kết quả mong đợi:
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Đầu vào:
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};
Kết quả mong đợi:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Giải thích
Dấu ngoặc kép trong giá trị được escape bằng dấu gạch chéo ngược: {"quote": "say \"hi\""}.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Tạo từng cặp "key": "value" riêng rồi nối lại.
Gợi ý 2
Escape dấu gạch chéo ngược trước dấu ngoặc kép để không escape nhầm phần vừa thêm.
Gợi ý 3
Đầu vào rỗng vẫn cần cặp ngoặc: {}.
Độ phức tạp mong đợi
thời gian O(tổng độ dài), bộ nhớ phụ O(tổng độ dài)
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.