Problema
Un modulo di registrazione riceve le età come testo. Una voce è valida quando, dopo aver rimosso gli spazi a entrambi gli estremi, contiene solo cifre (nessun segno) e il suo valore è compreso tra 0 e 150 inclusi.
Trova la prima voce non valida così il modulo può indicarla all'utente.
Implementa first_invalid_age(values).
Input
values: Le età digitati, nell'ordine del modulo.
Output
Restituisci l'indice della prima voce non valida, oppure -1 se sono tutte valide.
Vincoli
0 ≤ numero di voci ≤ 10,000
Ogni voce ha al massimo 20 caratteri
Esempi
Input:
values = ["25", " 40 ", "abc", "200"]
Output atteso:
expected = 2
Input:
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};
Output atteso:
long long expected = 2;
Input:
string[] values = new string[] {"25", " 40 ", "abc", "200"};
Output atteso:
long expected = 2;
Spiegazione
"25" e " 40 " (spazi rimossi) sono validi; "abc" all'indice 2 è la prima voce non valida.
Input:
values = ["0", "150", "007"]
Output atteso:
expected = -1
Input:
std::vector<std::string> values = {"0", "150", "007"};
Output atteso:
long long expected = -1;
Input:
string[] values = new string[] {"0", "150", "007"};
Output atteso:
long expected = -1;
Spiegazione
Tutte e tre sono cifre tra 0 e 150 (007 è 7), quindi la risposta è -1.
Come affrontarlo
Prova prima da solo, poi apri un suggerimento alla volta.
Suggerimento 1
Togli gli spazi, poi verifica che la voce non sia vuota e contenga solo cifre.
Suggerimento 2
Solo dopo confronta il suo valore con 150.
Suggerimento 3
Un segno meno rende la voce non valida, e 007 è un 7 valido.
Complessità attesa
tempo O(lunghezza totale), spazio aggiuntivo O(1)
Riferimenti
Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.