Problem
Programme erhalten oft JSON wie {"apples": 3, "pears": 5}. Bibliotheken wie System.Text.Json parsen es für dich, aber ein einfacher Fall von Hand zeigt, wie das Format funktioniert.
Die Eingabe ist ein flaches JSON-Objekt: {, dann null oder mehr "key": value-Paare, getrennt durch Kommas, dann }. Schlüssel stehen in Anführungszeichen und enthalten keine Anführungszeichen, Kommas oder Doppelpunkte; Werte sind ganze Zahlen, möglicherweise negativ. Leerzeichen dürfen um jedes der Symbole herum vorkommen.
Implementiere sum_json_numbers(text).
Input
text: Das JSON-Objekt.
Output
Gib die Summe aller Werte zurück (0 für ein leeres Objekt).
Einschränkungen
2 ≤ Länge des Textes ≤ 100,000
Höchstens 10,000 Paare; jeder Wert und die Summe passen in eine 64-Bit-Ganzzahl
Beispiele
Eingabe:
text = "{\"apples\": 3, \"pears\": 5}"
Erwartete Ausgabe:
expected = 8
Eingabe:
std::string text = "{\"apples\": 3, \"pears\": 5}";
Erwartete Ausgabe:
long long expected = 8;
Eingabe:
string text = "{\"apples\": 3, \"pears\": 5}";
Erwartete Ausgabe:
long expected = 8;
Erläuterung
3 + 5 = 8.
Eingabe:
text = "{ \"debt\" : -20 , \"cash\":15 }"
Erwartete Ausgabe:
expected = -5
Eingabe:
std::string text = "{ \"debt\" : -20 , \"cash\":15 }";
Erwartete Ausgabe:
long long expected = -5;
Eingabe:
string text = "{ \"debt\" : -20 , \"cash\":15 }";
Erwartete Ausgabe:
long expected = -5;
Erläuterung
Leerzeichen um die Symbole herum spielen keine Rolle: −20 + 15 = −5.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Entferne die geschweiften Klammern und teile die Paare an den Kommas.
Hinweis 2
Jeder Wert ist der Text nach dem Doppelpunkt; trimme Leerzeichen vor dem Umwandeln.
Hinweis 3
Nutze eine 64-Bit-Ganzzahl und gib für ein leeres Objekt 0 zurück.
Erwartete Komplexität
Zeit O(Textlänge), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.