Skip to main content

2024-08-01 老年人的数量

MarshioAbout 1 minnowcodernowcoder

老年人的数量open in new window

您将获得一个从 0 索引开始的字符串 details 数组。 details 的每个元素提供有关压缩为长度为15字符串的给定乘客的信息。

1.前十个字符由乘客的电话号码组成。

2.下一个字符表示该人的性别。

3.下两个字符用于表示该人的年龄。

4.最后两个字符决定分配给该人的座位。

返回严格限制在60岁以上的旅客人数。

输入描述:第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。

输入: details = ["7868190130M7522","5303914400F9211","9273338290F4010"]
输出: 2  The passengers at indices 0, 1, and 2 have ages 75, 92, and 40. Thus, there are 2 people who are over 60 years old.

解题思路

简单说下思路,已知固定位数是年龄,那么只需要知道这两个字符之"和"大于60即可。

亮点

  • charAt,字符运算
  • 减少声明,减少空间开销
  • 时间复杂度为 O(n)
  • 空间复杂度为 O(1)

实现

public class Day0801 {


    public static void main(String[] args) {
        System.out.println(new Day0801().countSeniors(new String[]{"7868190130M7522", "5303914400F9211", "9273338290F4010"}));
    }

    public int countSeniors(String[] details) {
        int num = 0;
        for (int i = 0; i < details.length; i++) {
            if (details[i].charAt(11) - '0' >= 6 && details[i].charAt(12) - '0' > 0) {
                num++;
            }
        }
        return num;
    }
}