题目描述
公司用一个字符串来表示员工的出勤信息
- absent:缺勤
- late:迟到
- leaveearly:早退
- present:正常上班
现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:
- 缺勤不超过一次;
- 没有连续的迟到/早退;
- 任意连续7次考勤,缺勤/迟到/早退不超过3次。
输入描述
用户的考勤数据字符串
- 记录条数 >= 1;
- 输入字符串长度 < 10000;
- 不存在非法输入;
如:
2
present
present
输出描述
根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,
对于输入示例的结果应为:
true true
如:
2
present
present absent present present leaveearly present absent
输出描述
根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,
对于输入示例的结果应为:
true false
如:
3
present
present absent present present leaveearly present present absent
present absent present present leaveearly present present present leaveearly
输出描述
根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,
对于输入示例的结果应为:
true false true
java代码
package odTest;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
public class WorkAttandance {
static String sign = "absent late leaveearly";
static boolean flag = true;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = Integer.parseInt(scanner.nextLine());
List<String[]> statuses = new ArrayList<>();
for(int i=0;i<num;i++) {
String[] status = scanner.nextLine().split(" ");
statuses.add(status);
}
for(String[] attan:statuses) {
judgeSituation(attan,0);
System.out.println(flag);
flag = true;
}
}
public static void judgeSituation(String[] status,int index){
if(flag == false) {
return;
}
int count = 0;
int log = 0;
for(int i = index;i<status.length;i++) {
count++;
log = sign.contains(status[i])? ++log:log;
if(log>2 || flag == false) {
flag = false;
return;
}
if(count == 7&& status.length-index-1>=7) {
judgeSituation(status,index+1);
return;
}
}
}
}