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

Tạo đối tượng JSON

Biến các khóa và giá trị thành một chuỗi đối tượng JSON, thoát dấu ngoặc kép và dấu gạch chéo ngược đúng cách.

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

  • Viết các cặp khóa-giá trị theo cú pháp JSON
  • Escape dấu ngoặc kép và dấu gạch chéo ngược trong chuỗi
  • Nối các phần bằng dấu phân cách

Đề bài

Xem bản gốc (English)

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ụ

Ví dụ 1
Đầ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"}.

Ví dụ 2
Đầ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.

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.