Zurück zu den Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Ein flaches JSON-Objekt summieren

Parsen Sie ein flaches JSON-Objekt, dessen Werte ganze Zahlen sind, und addieren Sie die Werte.

Das lernst du

  • Schlüssel-Wert-Paare aus JSON-Text lesen
  • Leerzeichen und negative Zahlen behandeln
  • Werte in einer 64-Bit-Ganzzahl summieren

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

Beispiel 1
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.

Beispiel 2
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.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.