Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Sumar un objeto JSON plano

Analiza un objeto JSON plano cuyos valores son enteros y suma los valores.

Lo que aprenderás

  • Leer pares clave-valor de un texto JSON
  • Manejar espacios y números negativos
  • Sumar valores en un entero de 64 bits

Problema

Ver original (inglés)

Los programas a menudo reciben JSON como {"apples": 3, "pears": 5}. Bibliotecas como System.Text.Json lo analizan por ti, pero analizar un caso simple a mano muestra cómo funciona el formato.

La entrada es un objeto JSON plano: {, luego cero o más pares "key": value separados por comas, y después }. Las claves van entre comillas y no contienen comillas, comas ni dos puntos; los valores son enteros, posiblemente negativos. Puede haber espacios alrededor de cualquiera de los símbolos.

Implementa sum_json_numbers(text).

Entrada

text: El objeto JSON.

Salida

Devuelve la suma de todos los valores (0 para un objeto vacío).

Restricciones

2 ≤ longitud del texto ≤ 100,000

Como máximo 10,000 pares; cada valor y la suma caben en un entero de 64 bits

Ejemplos

Ejemplo 1
Entrada:
text = "{\"apples\": 3, \"pears\": 5}"

Salida esperada:
expected = 8
Entrada:
std::string text = "{\"apples\": 3, \"pears\": 5}";

Salida esperada:
long long expected = 8;
Entrada:
string text = "{\"apples\": 3, \"pears\": 5}";

Salida esperada:
long expected = 8;

Explicación

3 + 5 = 8.

Ejemplo 2
Entrada:
text = "{ \"debt\" : -20 , \"cash\":15 }"

Salida esperada:
expected = -5
Entrada:
std::string text = "{ \"debt\" : -20 , \"cash\":15 }";

Salida esperada:
long long expected = -5;
Entrada:
string text = "{ \"debt\" : -20 , \"cash\":15 }";

Salida esperada:
long expected = -5;

Explicación

Los espacios alrededor de los símbolos no importan: −20 + 15 = −5.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Quita las llaves y separa los pares por las comas.

Pista 2

Cada valor es el texto tras los dos puntos; quita espacios antes de convertir.

Pista 3

Usa un entero de 64 bits y devuelve 0 para un objeto vacío.

Complejidad esperada

tiempo O(longitud del texto), espacio extra O(1)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.