• PAT——1028. 人口普查


    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

    这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

    输入格式:

    输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

    输出格式:

    在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

    输入样例:

    5
    John 2001/05/12
    Tom 1814/09/06
    Ann 2121/01/30
    James 1814/09/05
    Steve 1967/11/20
    

    输出样例:

    3 Tom John

     1 package com.hone.basical;
     2 
     3 import java.io.BufferedInputStream;
     4 import java.util.Scanner;
     5 
     6 /**
     7  * 原题目:https://www.patest.cn/contests/pat-b-practise/1025
     8  * @author Xia
     9  * 就是简单的处理字符串(将字符串处理为整型)
    10  * 思路:先获取空格地方的下标,再将字符串中的年月日部分按照subString(int Start,int End)的方式解析出来
    11  * 有一个测试点运行超时
    12  */
    13 public class basicalLevel1028Consus{
    14     public static void main(String[] args) {
    15         Scanner s = new Scanner(new BufferedInputStream(System.in));
    16         int n = s.nextInt();
    17         s.nextLine();
    18         int valid = 0;
    19         int min = 20140906;            //定义最小年龄、最大年龄的出生年月
    20         int max = 0;
    21         String maxName = "";
    22         String minName = "";
    23         
    24         for (int i = 0; i < n; i++) {
    25             String str = s.nextLine();
    26             int count = 0;            //count表示年月开始的下标
    27             for (int j = 0; j < str.length(); j++) {
    28                 if (str.charAt(j) == ' ') {
    29                     count = j;
    30                     break;
    31                 }
    32             }
    33             //将字符串类型的年龄转化为int
    34             int data = Integer.parseInt(str.substring(count+1, count+5)+str.substring(count+6, count+8)+
    35                     str.substring(count+9, count+11));
    36             if (data>=18140906&&data<=20140906) {
    37                 valid++;
    38                 if (data > max) {
    39                     max = data;
    40                     minName = str.substring(0, count);
    41                 }
    42                 if (data<min) {
    43                     min = data;
    44                     maxName = str.substring(0, count);
    45                 }
    46             }
    47         }
    48         if (valid == 0) {
    49             System.out.println(0);
    50         }else {
    51             System.out.println(valid+" "+maxName+" "+minName);
    52         }
    53     }
    54 } 


  • 相关阅读:
    Armbian hostname and WiFi configuration
    尼采的哲学
    深度学习 —— 使用 gensim 实现 word2vec
    sklearn preprocessing 数据预处理(OneHotEncoder)
    中英文对照 —— 饮食与美食
    matlab 常用机器学习算法的实现
    linux下svn常用指令
    Python创建删除文件
    php使用mysql和mysqli连接查询数据
    vsftpd配置文件详解
  • 原文地址:https://www.cnblogs.com/xiaxj/p/7985871.html
Copyright © 2020-2023  润新知