Đề bài
Programs often receive JSON such as {"apples": 3, "pears": 5}. Libraries like System.Text.Json parse it for you, but parsing a simple case by hand shows how the format works.
The input is a flat JSON object: {, then zero or more "key": value pairs separated by commas, then }. Keys are quoted and contain no quotes, commas or colons; values are integers, possibly negative. Spaces may appear around any of the symbols.
Implement sum_json_numbers(text).
Input
text: The JSON object.
Output
Return the sum of all values (0 for an empty object).
Ràng buộc
2 ≤ length of text ≤ 100,000
At most 10,000 pairs; every value and the sum fit in a 64-bit integer
Ví dụ
Đầ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.
Đầ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
Spaces around the symbols do not matter: −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
Remove the braces, then split the pairs at commas.
Gợi ý 2
Each value is the text after the colon; trim spaces before converting.
Gợi ý 3
Use a 64-bit integer and return 0 for an empty object.
Độ phức tạp mong đợi
O(length of text) time, O(1) extra space
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.