All challenges
Easy 0 solved 0% acceptance

First Invalid Age

Validate typed ages and report where the first bad entry is instead of letting the program crash.

What you'll learn

  • Check that text contains only digits
  • Validate a number against a range
  • Report the position of the first bad entry

Problem

A sign-up form receives ages as text. An entry is valid when, after trimming spaces at both ends, it consists only of digits (no sign) and its value is between 0 and 150 inclusive.

Find the first invalid entry so the form can point the user to it.

Implement first_invalid_age(values).

Input

values: The typed ages, in form order.

Output

Return the index of the first invalid entry, or -1 if all of them are valid.

Constraints

0 ≤ number of entries ≤ 10,000

Each entry has at most 20 characters

Examples

Example 1
Input:
values = ["25", " 40 ", "abc", "200"]

Expected output:
expected = 2
Input:
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};

Expected output:
long long expected = 2;
Input:
string[] values = new string[] {"25", " 40 ", "abc", "200"};

Expected output:
long expected = 2;

Explanation

"25" and " 40 " (spaces trimmed) are valid; "abc" at index 2 is the first invalid entry.

Example 2
Input:
values = ["0", "150", "007"]

Expected output:
expected = -1
Input:
std::vector<std::string> values = {"0", "150", "007"};

Expected output:
long long expected = -1;
Input:
string[] values = new string[] {"0", "150", "007"};

Expected output:
long expected = -1;

Explanation

All three are digits between 0 and 150 (007 is 7), so the answer is -1.

How to approach it

Try on your own first, then open one hint at a time.

Hint 1

Trim the entry, then check it is non-empty and made only of digits.

Hint 2

Only after that, compare its value with 150.

Hint 3

A minus sign makes the entry invalid, and 007 is a valid 7.

Expected complexity

O(total length) time, O(1) extra space

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.