解法一:字符串处理

简单的字符串处理问题,根据时间格式统一转换成以秒为单位的时间,然后统计最大值和最小值即可。

  1. import java.io.*;
  2. public class Main {
  3. public static void main(String[] args) throws IOException {
  4. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  5. PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
  6. int N = Integer.parseInt(in.readLine());
  7. String[] input;
  8. int signInTime = 0x3f3f3f3f, signOutTime = -1;
  9. String signInId = "", signOutId = "";
  10. for (int i = 0; i < N; ++i) {
  11. input = in.readLine().split(" ");
  12. int signIn = parseTime(input[1]);
  13. int signOut = parseTime(input[2]);
  14. if (signIn < signInTime) {
  15. signInTime = signIn;
  16. signInId = input[0];
  17. }
  18. if (signOut > signOutTime) {
  19. signOutTime = signOut;
  20. signOutId = input[0];
  21. }
  22. }
  23. out.println(signInId + " " + signOutId);
  24. out.flush();
  25. }
  26. private static int parseTime(String time) {
  27. String[] elems = time.split(":");
  28. return Integer.parseInt(elems[0]) * 3600 +
  29. Integer.parseInt(elems[1]) * 60 +
  30. Integer.parseInt(elems[2]);
  31. }
  32. }