2024年华为OD机试真题-考勤信息

华为OD机试真题-考勤信息-2024年OD统一考试(D卷)

题目描述:

公司用一个字符串来表示员工的出勤信息:

absent:缺勤

late:迟到

leaveearly:早退

present:正常上班

现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:

缺勤不超过一次;没有连续的迟到/早退;任意连续7次考勤,缺勤/迟到/早退不超过3次

输入描述:

用户的考勤数据字符串,记录条数 >= 1;输入字符串长度<10000;不存在非法输入

如:

2

present

present absent present present leaveearly present absent

输出描述:

根据考勤数据字符串,如果能得到考勤奖,输出"true";否则输出"false",对于输入示例的结果应为:

true false

示例1

输入:

2

present

present present

输出:

true true

说明:

示例2

输入:

2

present

present absent present present leaveearly present absent

输出:

true false

说明:

解题思路:

考察对字符串和遍历的理解和运用。

Java解法:

import java.util.*; 
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); // 创建Scanner对象来读取输入
        int t = in.nextInt(); // 读取测试用例的数量
        in.nextLine(); // 读取并丢弃剩余的换行符
        
        // 处理每个测试用例
        while (t-- > 0) {
            String line = in.nextLine(); // 读取一行数据,代表一组考勤记录
            String[] v = line.split(" "); // 将考勤记录分割成数组,每个元素是一个考勤状态
            boolean f = true; // 标志变量,初始设置为true,表示可能获得出勤奖
            int cnt_absent = 0; // 缺勤次数的计数器
 
            // 遍历所有考勤记录
            for (int i = 0; i < v.length; i++) {
                if (v[i].equals("leaveearly")) // 将早退转换为迟到,统一处理
                    v[i] = "late";
                if (v[i].equals("absent")) // 计算缺勤次数
                    cnt_absent++;
                
                // 检查连续迟到的情况
                if (i >= 1 && v[i].equals("late") && v[i-1].equals("late"))
                    f = false; // 如果有连续的迟到,设置f为false
 
                // 检查任意连续7次考勤的规则
                if (i >= 6) {
                    int cnt_present = 0; // 统计7次考勤中的正常上班次数
                    for (int j = 0; j < 7; j++) // 计算从当前考勤向前数的7次考勤
                        cnt_present += v[i-j].equals("present") ? 1 : 0;
                    if (cnt_present < 4) // 如果正常上班次数少于4,即不良记录超过3次
                        f = false; // 设置f为false
                }
            }
 
            // 检查总缺勤次数

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

华为OD机试题库2024年 文章被收录于专栏

2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。

全部评论

相关推荐

4 5 评论
分享
牛客网
牛客企业服务