1 题目
2 代码
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class A1006 {
public final static DateFormat df = new SimpleDateFormat("HH:mm:ss");
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
Persons[] people = new Persons[M];
for (int i = 0; i < M; i++) {
String id = sc.next();
Date sign_in = df.parse(sc.next());
Date sign_out = df.parse(sc.next());
Persons person = new Persons(id, sign_in, sign_out);
people[i] = person;
}
int m = 0, n = 0;
Date start = df.parse("24:00:00");
Date end = df.parse("00:00:00");
for (int i = 0; i < M; i++) {
if (people[i].getSign_in_time().compareTo(start) == -1) {
start = people[i].getSign_in_time();
m = i;
}
if (people[i].getSign_out_time().compareTo(end) == 1) {
end = people[i].getSign_out_time();
n = i;
}
}
System.out.println(people[m].getId() + " " + people[n].getId());
}
}
class Persons {
private String id;
private Date sign_in_time;
private Date sign_out_time;
public Persons(String id, Date sign_in_time, Date sign_out_time) {
this.id = id;
this.sign_in_time = sign_in_time;
this.sign_out_time = sign_out_time;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getSign_in_time() {
return sign_in_time;
}
public void setSign_in_time(Date sign_in_time) {
this.sign_in_time = sign_in_time;
}
public Date getSign_out_time() {
return sign_out_time;
}
public void setSign_out_time(Date sign_out_time) {
this.sign_out_time = sign_out_time;
}
}
3 要点
(1)与之前做过的一道题B1028类似,需要比较时间的大小,之前有过经验,所以直接采用SimpleDateFormat进行比较,再采取类进行封装即可。
(2)注意Date中compareTo方法的返回值,与需要比较的时间相比,比它小返回-1,比它大返回1。