Все задачи
Легко Решено: 0 Процент решений: 0%

Сумма плоского объекта JSON

Разберите плоский JSON-объект, чьи значения — целые числа, и сложите эти значения.

Чему вы научитесь

  • Читать пары ключ-значение из текста JSON
  • Обрабатывать пробелы и отрицательные числа
  • Складывать значения в 64-битном целом

Условие

Программы часто получают JSON, например {"apples": 3, "pears": 5}. Библиотеки вроде System.Text.Json разбирают его за вас, но разбор простого случая вручную показывает, как устроен формат.

Вход — это плоский JSON-объект: {, затем ноль или больше пар "key": value, разделённых запятыми, затем }. Ключи заключены в кавычки и не содержат кавычек, запятых или двоеточий; значения — целые числа, возможно отрицательные. Пробелы могут появляться вокруг любого из символов.

Реализуйте sum_json_numbers(text).

Input

text: JSON-объект.

Output

Верните сумму всех значений (0 для пустого объекта).

Ограничения

2 ≤ длина текста ≤ 100,000

Не больше 10,000 пар; каждое значение и сумма помещаются в 64-битное целое

Примеры

Пример 1
Ввод:
text = "{\"apples\": 3, \"pears\": 5}"

Ожидаемый вывод:
expected = 8
Ввод:
std::string text = "{\"apples\": 3, \"pears\": 5}";

Ожидаемый вывод:
long long expected = 8;
Ввод:
string text = "{\"apples\": 3, \"pears\": 5}";

Ожидаемый вывод:
long expected = 8;

Пояснение

3 + 5 = 8.

Пример 2
Ввод:
text = "{ \"debt\" : -20 , \"cash\":15 }"

Ожидаемый вывод:
expected = -5
Ввод:
std::string text = "{ \"debt\" : -20 , \"cash\":15 }";

Ожидаемый вывод:
long long expected = -5;
Ввод:
string text = "{ \"debt\" : -20 , \"cash\":15 }";

Ожидаемый вывод:
long expected = -5;

Пояснение

Пробелы вокруг символов не имеют значения: −20 + 15 = −5.

Как подступиться

Сначала попробуйте сами, затем открывайте подсказки по одной.

Подсказка 1

Уберите фигурные скобки и разделите пары по запятым.

Подсказка 2

Каждое значение — текст после двоеточия; обрежьте пробелы перед преобразованием.

Подсказка 3

Используйте 64-битное целое и верните 0 для пустого объекта.

Ожидаемая сложность

время O(длина текста), доп. память O(1)

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.