Problema
Um formulário de cadastro recebe idades como texto. Uma entrada é válida quando, após remover espaços em branco nas duas extremidades, ela contém apenas dígitos (sem sinal) e seu valor está entre 0 e 150 inclusive.
Encontre a primeira entrada inválida para que o formulário possa apontar o usuário até ela.
Implemente first_invalid_age(values).
Entrada
values: As idades digitadas, na ordem do formulário.
Saída
Retorne o índice da primeira entrada inválida, ou -1 se todas forem válidas.
Restrições
0 ≤ número de entradas ≤ 10,000
Cada entrada tem no máximo 20 caracteres
Exemplos
Entrada:
values = ["25", " 40 ", "abc", "200"]
Saída esperada:
expected = 2
Entrada:
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};
Saída esperada:
long long expected = 2;
Entrada:
string[] values = new string[] {"25", " 40 ", "abc", "200"};
Saída esperada:
long expected = 2;
Explicação
"25" e " 40 " (espaços removidos) são válidos; "abc" no índice 2 é a primeira entrada inválida.
Entrada:
values = ["0", "150", "007"]
Saída esperada:
expected = -1
Entrada:
std::vector<std::string> values = {"0", "150", "007"};
Saída esperada:
long long expected = -1;
Entrada:
string[] values = new string[] {"0", "150", "007"};
Saída esperada:
long expected = -1;
Explicação
Todos os três são dígitos entre 0 e 150 (007 é 7), então a resposta é -1.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Remova os espaços e verifique se a entrada não está vazia e só tem dígitos.
Dica 2
Só depois compare o valor com 150.
Dica 3
Um sinal de menos torna a entrada inválida, e 007 é um 7 válido.
Complexidade esperada
tempo O(comprimento total), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.