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

Sum a Flat JSON Object

Parse a flat JSON object whose values are integers and add up the values.

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

  • Read key-value pairs from JSON text
  • Handle spaces and negative numbers
  • Sum values in a 64-bit integer

Đề bài

Xem bản dịch

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ụ

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

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.

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.