Problème
Un formulaire d'inscription reçoit des âges sous forme de texte. Une entrée est valide lorsque, après avoir supprimé les espaces aux deux extrémités, elle ne contient que des chiffres (sans signe) et que sa valeur est comprise entre 0 et 150 inclus.
Trouvez la première entrée invalide afin que le formulaire puisse l'indiquer à l'utilisateur.
Implémentez first_invalid_age(values).
Input
values: Les âges saisis, dans l'ordre du formulaire.
Output
Retournez l'indice de la première entrée invalide, ou -1 si elles sont toutes valides.
Contraintes
0 ≤ nombre d'entrées ≤ 10,000
Chaque entrée a au plus 20 caractères
Exemples
Entrée :
values = ["25", " 40 ", "abc", "200"]
Sortie attendue :
expected = 2
Entrée :
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};
Sortie attendue :
long long expected = 2;
Entrée :
string[] values = new string[] {"25", " 40 ", "abc", "200"};
Sortie attendue :
long expected = 2;
Explication
"25" et " 40 " (espaces retirés) sont valides ; "abc" à l'indice 2 est la première entrée invalide.
Entrée :
values = ["0", "150", "007"]
Sortie attendue :
expected = -1
Entrée :
std::vector<std::string> values = {"0", "150", "007"};
Sortie attendue :
long long expected = -1;
Entrée :
string[] values = new string[] {"0", "150", "007"};
Sortie attendue :
long expected = -1;
Explication
Les trois sont des chiffres entre 0 et 150 (007 vaut 7), donc la réponse est -1.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Retirez les espaces, puis vérifiez que l'entrée n'est pas vide et ne contient que des chiffres.
Indice 2
Ensuite seulement, comparez sa valeur à 150.
Indice 3
Un signe moins rend l'entrée invalide, et 007 est un 7 valide.
Complexité attendue
temps O(longueur totale), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.