Problema
JSON è il formato testuale che la maggior parte dei programmi usa per scambiare dati. Un oggetto JSON si scrive come {"key": "value", ...}.
Date liste corrispondenti di chiavi e valori (tutti testo), costruisci la stringa dell'oggetto JSON in questo formato esatto:
- Inizia con
{e termina con}. - Scrivi ogni coppia come
"key": "value", nell'ordine dato, separata da,(virgola e spazio). - Dentro una stringa, scrivi un backslash
\come\\e una doppia virgoletta"come\". Gli altri caratteri restano invariati.
Implementa json_object_string(keys, values).
Ingresso
keys, values: Liste della stessa lunghezza.
Uscita
Restituisci il testo JSON. Un oggetto vuoto è {}.
Vincoli
0 ≤ numero di coppie ≤ 100
Chiavi e valori hanno al massimo 50 caratteri stampabili
Esempi
Input:
keys = ["name", "city"]
values = ["Ada", "London"]
Output atteso:
expected = "{\"name\": \"Ada\", \"city\": \"London\"}"
Input:
std::vector<std::string> keys = {"name", "city"};
std::vector<std::string> values = {"Ada", "London"};
Output atteso:
std::string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Input:
string[] keys = new string[] {"name", "city"};
string[] values = new string[] {"Ada", "London"};
Output atteso:
string expected = "{\"name\": \"Ada\", \"city\": \"London\"}";
Spiegazione
Ogni coppia diventa "key": "value": {"name": "Ada", "city": "London"}.
Input:
keys = ["quote"]
values = ["say \"hi\""]
Output atteso:
expected = "{\"quote\": \"say \\\"hi\\\"\"}"
Input:
std::vector<std::string> keys = {"quote"};
std::vector<std::string> values = {"say \"hi\""};
Output atteso:
std::string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Input:
string[] keys = new string[] {"quote"};
string[] values = new string[] {"say \"hi\""};
Output atteso:
string expected = "{\"quote\": \"say \\\"hi\\\"\"}";
Spiegazione
Le virgolette dentro il valore vengono escape con un backslash: {"quote": "say \"hi\""}.
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Costruisci ogni coppia "key": "value" separatamente, poi uniscile.
Suggerimento 2
Fai l'escape dei backslash prima delle virgolette, così non rifai l'escape dei tuoi escape.
Suggerimento 3
Anche un input vuoto ha bisogno delle graffe: {}.
Complessità attesa
tempo O(lunghezza totale), spazio aggiuntivo O(lunghezza totale)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.