Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Primera edad no válida

Valida las edades escritas y señala dónde está la primera entrada incorrecta en lugar de dejar que el programa falle.

Lo que aprenderás

  • Comprobar que un texto solo tiene dígitos
  • Comprobar que un número está en un rango
  • Indicar la posición de la primera entrada mala

Problema

Ver original (inglés)

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

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

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

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.