Problema
Un formulario de registro recibe edades como texto. Una entrada es válida cuando, después de eliminar los espacios al inicio y al final, está formada solo por dígitos (sin signo) y su valor está entre 0 y 150 inclusive.
Encuentra la primera entrada inválida para que el formulario pueda señalarla al usuario.
Implementa first_invalid_age(values).
Entrada
values: Las edades escritas, en el orden del formulario.
Salida
Devuelve el índice de la primera entrada inválida, o -1 si todas son válidas.
Restricciones
0 ≤ número de entradas ≤ 10,000
Cada entrada tiene como máximo 20 caracteres
Ejemplos
Entrada:
values = ["25", " 40 ", "abc", "200"]
Salida esperada:
expected = 2
Entrada:
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};
Salida esperada:
long long expected = 2;
Entrada:
string[] values = new string[] {"25", " 40 ", "abc", "200"};
Salida esperada:
long expected = 2;
Explicación
"25" y " 40 " (con espacios eliminados) son válidas; "abc" en el índice 2 es la primera entrada inválida.
Entrada:
values = ["0", "150", "007"]
Salida esperada:
expected = -1
Entrada:
std::vector<std::string> values = {"0", "150", "007"};
Salida esperada:
long long expected = -1;
Entrada:
string[] values = new string[] {"0", "150", "007"};
Salida esperada:
long expected = -1;
Explicación
Las tres son dígitos entre 0 y 150 (007 es 7), así que la respuesta es -1.
Cómo abordarlo
Inténtalo primero por tu cuenta y luego abre las pistas una a una.
Pista 1
Quita los espacios y comprueba que la entrada no esté vacía y solo tenga dígitos.
Pista 2
Solo después compara su valor con 150.
Pista 3
Un signo menos la vuelve no válida, y 007 es un 7 válido.
Complejidad esperada
tiempo O(longitud total), espacio extra O(1)
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.