Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Gültige Zahlen summieren

Addiere die Einträge, die ganze Zahlen sind, und überspringe alles andere, so wie try/except mit ungültiger Eingabe umgeht.

Das lernst du

  • Ungültige Eingaben überspringen statt abzustürzen
  • Leerzeichen entfernen, bevor Text in eine Zahl umgewandelt wird
  • Ein optionales Vorzeichen mit folgenden Ziffern erkennen

Problem

Von Menschen eingegebene Daten sind oft unordentlich. Du erhältst eine Liste von Strings und musst die Einträge addieren, die ganze Zahlen sind, während du den Rest ignorierst, statt abzustürzen.

Ein Eintrag zählt, wenn er nach dem Entfernen von Leerzeichen an beiden Enden aus einem optionalen +- oder --Vorzeichen gefolgt von einer oder mehreren Ziffern besteht. Alles andere (leerer Text, Dezimalzahlen wie "2.5", Wörter) wird übersprungen.

Implementiere sum_valid_numbers(values).

Eingabe

values: Die zu lesenden Einträge.

Ausgabe

Gib die Summe der gültigen ganzen Zahlen zurück (0, wenn es keine gibt).

Einschränkungen

0 ≤ Anzahl der Einträge ≤ 1,000

Jeder Eintrag hat höchstens 20 Zeichen; gültige Zahlen passen in eine 64-Bit-Ganzzahl

Beispiele

Beispiel 1
Eingabe:
values = ["10", " 5 ", "abc", "-3"]

Erwartete Ausgabe:
expected = 12
Eingabe:
std::vector<std::string> values = {"10", " 5 ", "abc", "-3"};

Erwartete Ausgabe:
long long expected = 12;
Eingabe:
string[] values = new string[] {"10", " 5 ", "abc", "-3"};

Erwartete Ausgabe:
long expected = 12;

Erläuterung

"10", " 5 " (Leerzeichen werden entfernt) und "-3" sind ganze Zahlen; "abc" wird übersprungen. 10 + 5 - 3 = 12.

Beispiel 2
Eingabe:
values = ["2.5", "", "seven"]

Erwartete Ausgabe:
expected = 0
Eingabe:
std::vector<std::string> values = {"2.5", "", "seven"};

Erwartete Ausgabe:
long long expected = 0;
Eingabe:
string[] values = new string[] {"2.5", "", "seven"};

Erwartete Ausgabe:
long expected = 0;

Erläuterung

Keiner der Einträge ist eine ganze Zahl, also ist die Summe 0.

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

Entferne zuerst die Leerzeichen und prüfe dann, ob der Rest eine gültige ganze Zahl ist.

Hinweis 2

Wenn du in try/except umwandelst (oder die Zeichen prüfst), kannst du ungültige Einträge überspringen, ohne abzubrechen.

Hinweis 3

Ein einzelnes Vorzeichen wie "+" ist keine Zahl.

Erwartete Komplexität

Zeit O(Gesamtlä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.