华为OD统一考试 - 考勤信息

题目描述

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

  • absent:缺勤
  • late:迟到
  • leaveearly:早退
  • present:正常上班

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

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

输入描述

用户的考勤数据字符串

  • 记录条数 >= 1;
  • 输入字符串长度 < 10000;
  • 不存在非法输入;

如:

2

present

present absent present present leaveearly present absent

输出描述

根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,

对于输入示例的结果应为:

true false

用例

输入

2

present

present present

输出

true

true

说明

输入

2

present

present absent present present leaveearly present absent

输出

true

false

说明

题目解析

本题需要注意下

没有连续的迟到/早退;

根据考友反馈,连续的迟到/早退,应该指:本次是迟到或早退,上次也是迟到或早退。

比如,本次是迟到,上次是早退,则也算是:连续的迟到/早退

本题主要难点在于如果统计”任意连续7次考勤“中的缺勤/迟到/早退次数。

这里我们可以使用滑动窗口,且滑窗窗口的长度最大为7

  • 当滑窗右边界索引R < 7 时,则滑窗长度 = R + 1
  • 当滑窗右边界索引R >= 7时,则滑窗长度 = 7,同时能推导出滑窗左边界索引L为 = R - 6

如下图所示

 我们只要计算出滑窗内部 present 次数,即可通过:

任意连续7次考勤中的缺勤+迟到+早退次数 是否大于3

import Foundation

func ODTest_

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

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

本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务