给你一个下标从 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 个和第 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)。仅使用常量空间。