LeetCode 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 ( l e n ( d e t a i l s ) ) O(len(details)) O(len(details))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
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
# 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

你可能感兴趣的:(题解,#,力扣LeetCode,leetcode,算法,题解,模拟,字符串)