import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int num = sc.nextInt();
sc.nextLine();
StringBuilder sb = new StringBuilder();
for(int i = 0;i < num;i ++){
String[] split = sc.nextLine().split("\\s+");
List<String> list = Arrays.asList(split);
//缺勤超过一次 || 任意7天缺勤/迟到/早退超过3次 || 连续迟到或者早退
if(absentMoreThanOne(list) || isBadAttendance(list) ||
isNotContinuousAttendance(list)){
sb.append("false");
sb.append(" ");
continue;
}
sb.append("true");
sb.append(" ");
}
System.out.println(sb.substring(0,sb.length()));
}
}
public static boolean absentMoreThanOne(List<String> list){
int size = list.size();
int count = 0;
for(String s : list) {
if ("absent".equals(s)) {
count++;
}
}
return count > 1;
}
public static boolean isBadAttendance(List<String> list){
int size = list.size();
int[] ints = new int[size];
for(int i = 0;i < size;i ++){
ints[i] = list.get(i).equals("present") ? 0 : 1;
}
if(size <= 7){
return Arrays.stream(ints).sum() > 3;
}
for(int i = 0;i <= size - 7;i ++){
int[] newInts = Arrays.copyOfRange(ints, 0, i + 7);
if(Arrays.stream(newInts).sum() > 3){
return true;
}
}
return false;
}
public static boolean isNotContinuousAttendance(List<String> list){
List<String> res = Arrays.asList("late","leaveearly");
int size = list.size();
for(int i = 1;i < size;i ++){
if(res.contains(list.get(i)) && res.contains(list.get(i - 1))){
return true;
}
}
return false;
}
}
算法题-考勤信息
于 2024-02-01 00:34:37 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)