解法一:字符串处理
简单的字符串处理问题,根据时间格式统一转换成以秒为单位的时间,然后统计最大值和最小值即可。
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]);}}
