Quay lại danh sách thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Cộng các số trong đối tượng JSON phẳng

Phân tích một đối tượng JSON phẳng có các giá trị là số nguyên và cộng các giá trị đó lại.

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

  • Đọc các cặp khóa-giá trị từ chuỗi JSON
  • Xử lý khoảng trắng và số âm
  • Cộng giá trị bằng số nguyên 64-bit

Đề bài

Xem bản gốc (English)

Các chương trình thường nhận JSON như {"apples": 3, "pears": 5}. Các thư viện như System.Text.Json sẽ phân tích nó cho bạn, nhưng tự xử lý một trường hợp đơn giản sẽ giúp hiểu định dạng này hoạt động như thế nào.

Dữ liệu vào là một đối tượng JSON phẳng: {, rồi đến không hoặc nhiều cặp "key": value được ngăn cách bởi dấu phẩy, rồi đến }. Các khóa được đặt trong dấu ngoặc kép và không chứa dấu ngoặc kép, dấu phẩy hoặc dấu hai chấm; các giá trị là số nguyên, có thể âm. Có thể có khoảng trắng quanh bất kỳ ký hiệu nào.

Hãy cài đặt sum_json_numbers(text).

Input

text: Đối tượng JSON.

Output

Trả về tổng của tất cả các giá trị (0 cho một đối tượng rỗng).

Ràng buộc

2 ≤ độ dài chuỗi ≤ 100,000

Tối đa 10,000 cặp; mọi giá trị và tổng đều vừa với số nguyên 64-bit

Ví dụ

Ví dụ 1
Đầu vào:
text = "{\"apples\": 3, \"pears\": 5}"

Kết quả mong đợi:
expected = 8
Đầu vào:
std::string text = "{\"apples\": 3, \"pears\": 5}";

Kết quả mong đợi:
long long expected = 8;
Đầu vào:
string text = "{\"apples\": 3, \"pears\": 5}";

Kết quả mong đợi:
long expected = 8;

Giải thích

3 + 5 = 8.

Ví dụ 2
Đầu vào:
text = "{ \"debt\" : -20 , \"cash\":15 }"

Kết quả mong đợi:
expected = -5
Đầu vào:
std::string text = "{ \"debt\" : -20 , \"cash\":15 }";

Kết quả mong đợi:
long long expected = -5;
Đầu vào:
string text = "{ \"debt\" : -20 , \"cash\":15 }";

Kết quả mong đợi:
long expected = -5;

Giải thích

Khoảng trắng quanh các ký hiệu không ảnh hưởng: −20 + 15 = −5.

Hướng tiếp cận

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

Gợi ý 1

Bỏ cặp ngoặc nhọn rồi tách các cặp tại dấu phẩy.

Gợi ý 2

Mỗi giá trị là phần sau dấu hai chấm; cắt khoảng trắng trước khi đổi kiểu.

Gợi ý 3

Dùng số nguyên 64-bit và trả 0 cho đối tượng rỗng.

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

thời gian O(độ dài chuỗi), bộ nhớ phụ O(1)

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.