解题思路:
题意也好理解,我的思路是将每个id的到达时间和离开时间统一转化成秒,再分别用两个map存储一下,同时更新最早到达时间和最迟离开时间,因为题目保证了两个时间都是唯一的,而map刚刚好没有重复的key。数据处理用split函数已经喜闻乐见了。
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String []args) {
Scanner input = new Scanner(System.in);
int m = input.nextInt();
int minUnlock = Integer.MAX_VALUE;
int maxLock = Integer.MIN_VALUE;
Map<Integer, String> unlockMap = new HashMap<>();
Map<Integer, String> lockMap = new HashMap<>();
for(int i=0; i<m; i++) {
String id = input.next();
String unlock[] = input.next().split(":");
int unlockTime = Integer.parseInt(unlock[0])*3600 + Integer.parseInt(unlock[1])*60 + Integer.parseInt(unlock[2]);
if(unlockTime < minUnlock) minUnlock = unlockTime;
unlockMap.put(unlockTime, id);
String lock[] = input.next().split(":");
int lockTime = Integer.parseInt(lock[0])*3600 + Integer.parseInt(lock[1])*60 + Integer.parseInt(lock[2]);
if(lockTime > maxLock) maxLock = lockTime;
lockMap.put(lockTime, id);
}
System.out.print(unlockMap.get(minUnlock) + " " + lockMap.get(maxLock));
input.close();
}
}