2678-老人的数目

Raphael Liu Lv10

给你一个下标从 0 开始的字符串 detailsdetails 中每个元素都是一位乘客的信息,信息用长度为 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 个和第 13 个字符对应乘客的年龄信息,所以我们可以枚举每一位乘客的信息,判断其年龄是否严格大于 60。

代码

[sol1-Python3]
1
2
3
class Solution:
def countSeniors(self, details: List[str]) -> int:
return sum(1 for info in details if int(info[11:13]) > 60)
[sol1-Java]
1
2
3
4
5
6
7
8
9
10
11
class Solution {
public int countSeniors(String[] details) {
int count = 0;
for (String info : details) {
if (Integer.parseInt(info.substring(11, 13)) > 60) {
count++;
}
}
return count;
}
}
[sol1-C#]
1
2
3
4
5
6
7
8
9
10
11
public class Solution {
public int CountSeniors(string[] details) {
int count = 0;
foreach (string info in details) {
if (int.Parse(info.Substring(11, 2)) > 60) {
count++;
}
}
return count;
}
}
[sol1-C++]
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
int countSeniors(vector<string>& details) {
int count = 0;
for (string & info : details) {
if (stoi(info.substr(11, 2)) > 60) {
count++;
}
}
return count;
}
};
[sol1-C]
1
2
3
4
5
6
7
8
9
10
int countSeniors(char ** details, int detailsSize) {
int count = 0;
for (int i = 0; i < detailsSize; i++) {
int age = (details[i][11] - '0') * 10 + details[i][12] - '0';
if (age > 60) {
count++;
}
}
return count;
}
[sol1-Go]
1
2
3
4
5
6
7
8
9
10
func countSeniors(details []string) int {
count := 0
for i := 0; i < len(details); i++ {
age, _ := strconv.Atoi(details[i][11:13])
if (age > 60) {
count++
}
}
return count
}
[sol1-JavaScript]
1
2
3
4
5
6
7
8
9
var countSeniors = function(details) {
let count = 0;
for (let i = 0; i < details.length; i++) {
if (parseInt(details[i].substring(11, 13)) > 60) {
count++;
}
}
return count;
};

复杂度分析

  • 时间复杂度:O(n),其中 n 为数组 details 的长度。
  • 空间复杂度:O(1)。仅使用常量空间。
 Comments
On this page
2678-老人的数目