Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Erstes ungültiges Alter

Validiere eingegebene Altersangaben und melde, wo der erste fehlerhafte Eintrag steht, statt das Programm abstürzen zu lassen.

Das lernst du

  • Prüfen, ob ein Text nur aus Ziffern besteht
  • Eine Zahl gegen einen Bereich prüfen
  • Die Position des ersten fehlerhaften Eintrags melden

Problem

Ein Anmeldeformular erhält Altersangaben als Text. Ein Eintrag ist gültig, wenn er nach dem Entfernen von Leerzeichen an beiden Enden nur aus Ziffern besteht (ohne Vorzeichen) und sein Wert zwischen 0 und 150 einschließlich liegt.

Finde den ersten ungültigen Eintrag, damit das Formular den Nutzer darauf hinweisen kann.

Implementiere first_invalid_age(values).

Eingabe

values: Die eingegebenen Altersangaben in Formularreihenfolge.

Ausgabe

Gib den Index des ersten ungültigen Eintrags zurück, oder -1, wenn alle gültig sind.

Einschränkungen

0 ≤ Anzahl der Einträge ≤ 10,000

Jeder Eintrag hat höchstens 20 Zeichen

Beispiele

Beispiel 1
Eingabe:
values = ["25", " 40 ", "abc", "200"]

Erwartete Ausgabe:
expected = 2
Eingabe:
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};

Erwartete Ausgabe:
long long expected = 2;
Eingabe:
string[] values = new string[] {"25", " 40 ", "abc", "200"};

Erwartete Ausgabe:
long expected = 2;

Erläuterung

"25" und " 40 " (Leerzeichen entfernt) sind gültig; "abc" an Index 2 ist der erste ungültige Eintrag.

Beispiel 2
Eingabe:
values = ["0", "150", "007"]

Erwartete Ausgabe:
expected = -1
Eingabe:
std::vector<std::string> values = {"0", "150", "007"};

Erwartete Ausgabe:
long long expected = -1;
Eingabe:
string[] values = new string[] {"0", "150", "007"};

Erwartete Ausgabe:
long expected = -1;

Erläuterung

Alle drei bestehen aus Ziffern zwischen 0 und 150 (007 ist 7), also ist die Antwort -1.

So gehst du vor

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

Hinweis 1

Trimme den Eintrag und prüfe, dass er nicht leer ist und nur aus Ziffern besteht.

Hinweis 2

Erst danach vergleichst du den Wert mit 150.

Hinweis 3

Ein Minuszeichen macht den Eintrag ungültig, und 007 ist eine gültige 7.

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.