解法一:字符串处理
简单的字符串处理问题,根据时间格式统一转换成以秒为单位的时间,然后统计最大值和最小值即可。
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(in.readLine());
String[] input;
int signInTime = 0x3f3f3f3f, signOutTime = -1;
String signInId = "", signOutId = "";
for (int i = 0; i < N; ++i) {
input = in.readLine().split(" ");
int signIn = parseTime(input[1]);
int signOut = parseTime(input[2]);
if (signIn < signInTime) {
signInTime = signIn;
signInId = input[0];
}
if (signOut > signOutTime) {
signOutTime = signOut;
signOutId = input[0];
}
}
out.println(signInId + " " + signOutId);
out.flush();
}
private static int parseTime(String time) {
String[] elems = time.split(":");
return Integer.parseInt(elems[0]) * 3600 +
Integer.parseInt(elems[1]) * 60 +
Integer.parseInt(elems[2]);
}
}