Đề bài
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.
Ràng buộc
0 ≤ number of entries ≤ 10,000
Each entry has at most 20 characters
Ví dụ
Đầu vào:
values = ["25", " 40 ", "abc", "200"]
Kết quả mong đợi:
expected = 2
Đầu vào:
std::vector<std::string> values = {"25", " 40 ", "abc", "200"};
Kết quả mong đợi:
long long expected = 2;
Đầu vào:
string[] values = new string[] {"25", " 40 ", "abc", "200"};
Kết quả mong đợi:
long expected = 2;
Giải thích
"25" and " 40 " (spaces trimmed) are valid; "abc" at index 2 is the first invalid entry.
Đầu vào:
values = ["0", "150", "007"]
Kết quả mong đợi:
expected = -1
Đầu vào:
std::vector<std::string> values = {"0", "150", "007"};
Kết quả mong đợi:
long long expected = -1;
Đầu vào:
string[] values = new string[] {"0", "150", "007"};
Kết quả mong đợi:
long expected = -1;
Giải thích
All three are digits between 0 and 150 (007 is 7), so the answer is -1.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Trim the entry, then check it is non-empty and made only of digits.
Gợi ý 2
Only after that, compare its value with 150.
Gợi ý 3
A minus sign makes the entry invalid, and 007 is a valid 7.
Độ phức tạp mong đợi
O(total length) time, O(1) extra space
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.