2678.老人的数目

【LetMeFly】2678.老人的数目

力扣题目链接:https://leetcode.cn/problems/number-of-senior-citizens/

给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息,信息用长度为 15 的字符串表示,表示方式如下:

  • 前十个字符是乘客的手机号码。
  • 接下来的一个字符是乘客的性别。
  • 接下来两个字符是乘客的年龄。
  • 最后两个字符是乘客的座位号。

请你返回乘客中年龄 严格大于 60 岁 的人数。

 

示例 1:

输入:details = ["7868190130M7522","5303914400F9211","9273338290F4010"]
输出:2
解释:下标为 0 ,1 和 2 的乘客年龄分别为 75 ,92 和 40 。所以有 2 人年龄大于 60 岁。

示例 2:

输入:details = ["1313579440F2036","2921522980M5644"]
输出:0
解释:没有乘客的年龄大于 60 岁。

 

提示:

  • 1 <= details.length <= 100
  • details[i].length == 15
  • details[i] 中的数字只包含 '0' 到 '9' 。
  • details[i][10] 是 'M' ,'F' 或者 'O' 之一。
  • 所有乘客的手机号码和座位号互不相同。

方法一:模拟

按照题意,将第12个字符所对应的数字乘以10,再加上第13个字符所对应的数字,看是否大于60。统计大于60的个数并返回。

  • 时间复杂度$O(len(details))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int countSeniors(vector<string>& details) {
int ans = 0;
for (string& d : details) {
ans += (d[11] - '0') * 10 + (d[12] - '0') > 60;
}
return ans;
}
};

Python

1
2
3
4
5
# from typing import List

class Solution:
def countSeniors(self, details: List[str]) -> int:
return sum(((ord(d[11]) - ord('0')) * 10 + (ord(d[12]) - ord('0')) > 60) for d in details)

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/133988079


2678.老人的数目
https://blog.letmefly.xyz/2023/10/23/LeetCode 2678.老人的数目/
作者
Tisfy
发布于
2023年10月23日
许可协议