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