Problema
JSON es el formato de texto que la mayoría de los programas usan para intercambiar datos. Un objeto JSON se escribe como {"key": "value", ...}.
Dadas listas correspondientes de claves y valores (todo texto), construye la cadena del objeto JSON con este formato exacto:
- Empieza con
{y termina con}. - Escribe cada par como
"key": "value", en el orden dado, separados por,(coma y espacio). - Dentro de una cadena, escribe una barra invertida
\como\\y una comilla doble"como\". Los demás caracteres se mantienen igual.
Implementa json_object_string(keys, values).
Entrada
keys, values: Listas de la misma longitud.
Salida
Devuelve el texto JSON. Un objeto vacío es {}.
Restricciones
0 ≤ número de pares ≤ 100
Las claves y los valores tienen como máximo 50 caracteres imprimibles
Ejemplos
Entrada:
keys = ["name", "city"]
values = ["Ada", "London"]
Salida esperada:
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Entrada:
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};
Salida esperada:
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Entrada:
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};
Salida esperada:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Explicación
Cada par se convierte en "key": "value": {"name": "Ada", "city": "London"}.
Entrada:
keys = ["quote"]
values = ["say \"hi\""]
Salida esperada:
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Entrada:
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};
Salida esperada:
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Entrada:
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};
Salida esperada:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Explicación
Las comillas dentro del valor se escapan con una barra invertida: {"quote": "say \"hi\""}.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Construye cada par "key": "value" por separado y luego únelos.
Pista 2
Escapa las barras invertidas antes que las comillas para no escapar tus propios escapes.
Pista 3
Una entrada vacía igual necesita las llaves: {}.
Complejidad esperada
tiempo O(longitud total), espacio extra O(longitud total)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.