描述
为了提升用户帐号的安全性,H站决定实施一项措施:对在1小时内(注:00:00:00与01:00:00仍视为在1小时内)出现5次或5次以上密码错误的账户,暂时禁止该帐号被登录。
现在小Hi拿到了某日全部密码错误的日志,他想知道有哪些帐号被暂时禁止登录。
输入
第一行包含一个整数N,代表记录的行数。
以下N行每行包含一个整数A和一个时间T。其中是A代表密码错误的账号ID;T代表发生时间,格式是"hh:mm:ss"。
1 ≤ N ≤ 10000 1 ≤ A ≤ 100000 00:00:00 ≤ T ≤ 23:59:59
输出
从小到大输出所有被禁止登录的帐号ID,每个一行。
样例输入
10
1000 00:00:00
1001 00:59:00
1001 00:58:00
1001 01:00:00
1000 01:00:00
1000 02:00:00
1000 03:00:00
1001 01:00:01
1000 04:00:00
1001 01:23:14
样例输出
1001
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
HashMap<Integer, ArrayList<Integer>> map = new HashMap<>();
for (int i = 0; i < N; i++) {
int id = in.nextInt();
String time = in.next();
int s = helper(time);
if (map.keySet().contains(id)) {
map.get(id).add(s);
} else {
ArrayList<Integer> list = new ArrayList<>();
list.add(s);
map.put(id, list);
}
}
ArrayList<Integer> ids = new ArrayList<>();
for (int id : map.keySet()
) {
if (map.get(id).size() >= 5) {
ArrayList<Integer> list = map.get(id);
list.sort((o1, o2) -> (o1 - o2));
for (int i = 0; i <= list.size() - 5; i++) {
if (list.get(i+4)-list.get(i) <=3600) {
ids.add(id);
break;
}
}
}
}
ids.sort((o1, o2) -> (o1 - o2));
for (int id:ids
) {
System.out.println(id);
}
}
private static int helper(String time) {
String[] ts = time.split(":");
return Integer.valueOf(ts[2]) + 60 * Integer.valueOf(ts[1]) + 60 * 60 * Integer.valueOf(ts[0]);
}
}