Problema
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
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.
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.