Welcome to Subscribe On Youtube
2678. Number of Senior Citizens
Description
You are given a 0-indexed array of strings details
. Each element of details
provides information about a given passenger compressed into a string of length 15
. The system is such that:
- The first ten characters consist of the phone number of passengers.
- The next character denotes the gender of the person.
- The following two characters are used to indicate the age of the person.
- The last two characters determine the seat allotted to that person.
Return the number of passengers who are strictly more than 60 years old.
Example 1:
Input: details = ["7868190130M7522","5303914400F9211","9273338290F4010"] Output: 2 Explanation: The passengers at indices 0, 1, and 2 have ages 75, 92, and 40. Thus, there are 2 people who are over 60 years old.
Example 2:
Input: details = ["1313579440F2036","2921522980M5644"] Output: 0 Explanation: None of the passengers are older than 60.
Constraints:
1 <= details.length <= 100
details[i].length == 15
details[i] consists of digits from '0' to '9'.
details[i][10] is either 'M' or 'F' or 'O'.
- The phone numbers and seat numbers of the passengers are distinct.
Solutions
Solution 1: Traversal and Counting
We can traverse each string $x$ in details
and convert the $12$th and $13$th characters (indexed at $11$ and $12$) of $x$ to integers, and check if they are greater than $60$. If so, we add one to the answer.
After the traversal, we return the answer.
The time complexity is $O(n)$, where $n$ is the length of details
. The space complexity is $O(1)`.
-
class Solution { public int countSeniors(String[] details) { int ans = 0; for (var x : details) { int age = Integer.parseInt(x.substring(11, 13)); if (age > 60) { ++ans; } } return ans; } }
-
class Solution { public: int countSeniors(vector<string>& details) { int ans = 0; for (auto& x : details) { int age = stoi(x.substr(11, 2)); ans += age > 60; } return ans; } };
-
class Solution: def countSeniors(self, details: List[str]) -> int: return sum(int(x[11:13]) > 60 for x in details)
-
func countSeniors(details []string) (ans int) { for _, x := range details { age, _ := strconv.Atoi(x[11:13]) if age > 60 { ans++ } } return }
-
function countSeniors(details: string[]): number { let ans = 0; for (const x of details) { const age = parseInt(x.slice(11, 13)); if (age > 60) { ++ans; } } return ans; }
-
impl Solution { pub fn count_seniors(details: Vec<String>) -> i32 { let mut ans = 0; for s in details.iter() { if let Ok(age) = s[11..13].parse::<i32>() { if age > 60 { ans += 1; } } } ans } }