2678. 老人的数目
难度: 简单
来源: 每日一题 2023.10.23
给你一个下标从 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'
之一。- 所有乘客的手机号码和座位号互不相同。
class Solution {
public int countSeniors(String[] details) {
}
}
分析与题解
-
暴力截取法
这个题目其实非常的简单, 我们直接根据题意截取第12位字符和第13位字符即可. 我们直接通过ASCII表判断两个字符是大于 ‘60’ 的即可.
char ageFirst = item.charAt(11); char ageSecond = item.charAt(12); if (ageFirst > '6' || (ageFirst == '6' && ageSecond > '0') ) { result++; }
整体逻辑代码如下所示.
class Solution { public int countSeniors(String[] details) { int result = 0; for(String item: details) { char ageFirst = item.charAt(11); char ageSecond = item.charAt(12); if (ageFirst > '6' || (ageFirst == '6' && ageSecond > '0') ) { result++; } } return result; } }
复杂度分析:
- 时间复杂度: O(n), 与数组长度相关的时间复杂度.
- 空间复杂度: O(1), 常量级别的空间复杂度.
结果如下所示.