Todos os desafios
Fácil 0 resolvidos 0% de aceitação

Primeira idade inválida

Valide idades digitadas e informe onde está a primeira entrada inválida, em vez de deixar o programa quebrar.

O que você vai aprender

  • Verificar se um texto só tem dígitos
  • Verificar se um número está dentro de um intervalo
  • Informar a posição da primeira entrada ruim

Problema

Ver original (inglês)

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

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

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

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.