华为OD机试之考勤信息(Java源码)

news/2025/1/16 5:57:26/

考勤信息

题目描述

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

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

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

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

如:

2
present
present absent present present leaveearly present absent

输入描述

用户的考勤数据字符串

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

输出描述

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

true false

用例

输入2
present
present present
输出true
true
说明
输入2
present
present absent present present leaveearly present absent
输出true
false
说明

源码和解析
解析:

这个题做好逻辑判断就行了

示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;//考勤问题
public class T38 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = Integer.parseInt(sc.nextLine());// 记录条数for (int i = 0; i < num; i++) {String input = sc.nextLine();String kqArr[] = input.split(" ");// 一、缺勤不超过1次int queqinCoun = 0; // 不超过1次for (String kq : kqArr) {if (kq.equals("absent")) {queqinCoun++;if (queqinCoun > 1) {break;}}}if (queqinCoun > 1) {System.out.println("false");break;}// 二、没有连续的迟到/早退 迟到和早退 也是连续的 相当于一天干了俩个事情 也算List<String> cList = new ArrayList<String>();cList.add("late");cList.add("leaveearly");boolean isLateOrLeaveEarly = false;for (int j = 1; j < kqArr.length; j++) {if (cList.contains(kqArr[j]) && cList.contains(kqArr[j - 1])) {// 出现连续的迟到/早退isLateOrLeaveEarly = true;break;}}if (isLateOrLeaveEarly) {System.out.println("false");break;}// 三、任意连续的7次考勤 ,缺勤/迟到/早退不超过3次 即 缺勤次数+迟到次数+早退次数<=3// 双指针做法int start = 0;int end = kqArr.length >= 7 ? 6 : kqArr.length;int count = 0;// 违规次数cList.add("absent");// 判断连个指针之间的初始值内是否已经满足false情况for (int k = start; k < end; k++) {if (cList.contains(kqArr[k])) {count++;}}if (count > 3) {System.out.println("false");break;}while (end < kqArr.length - 1) {// 指针右侧end++;if (cList.contains(kqArr[end])) {count++;// 加进来的是满足的}if (cList.contains(kqArr[start])) {count--;// 移出去的也是满足的}start++; // 左指针也需要右移1位 保持两个指针之间能取得连续7位if (count > 3) {break;}}if (count > 3) {System.out.println("false");break;}System.out.println("true");}}
}

运行示意图:
在这里插入图片描述


http://www.ppmy.cn/news/119747.html

相关文章

makefile编译debug版本调试时无法定位到源文件:No source available for “main() at 0x8544“

问题 之前用makefile编译了一个release版本的可执行文件&#xff0c;但是后面想调试的时候发现无法调试。 觉得-g就能解决问题&#xff0c;后面发现根本不行。 这里虽然加了-g选项&#xff0c;但是调试的时候还是出现找不到源文件的情况。 解决方案 对已有的C/C工程用mak…

UI设计用什么软件做?

1、即时设计 即时设计是一款国内的在线协同设计工具&#xff0c;提供原型设计、UI/UX 设计和设计交付等核心功能。它无需第三方插件&#xff0c;拥有丰富的组件样式、中英文字体库和本地化资源&#xff0c;受到专业设计师的好评。与其他国外的 UI 工具相比&#xff0c;即时设计…

警惕,最近的副业兼职诈骗。

大家好&#xff0c;我是鸟哥。 今天和大家聊聊最近超级猖狂的几类诈骗。 一、副业诈骗。最近两年“副业刚需”这个口号很流行&#xff0c;尤其是今年&#xff0c;职场动荡、工作难找&#xff0c;副业刚需变成了副业焦虑&#xff0c;骗子们也正是抓住了大家的这个心理&#xf…

【SpringBoot_Project_Actual combat】 Summary of Project experience_需要考虑的问题

无论是初学者还是有经验的专业人士&#xff0c;在学习一门新的IT技术时&#xff0c;都需要采取一种系统性的学习方法。那么作为一名技术er&#xff0c;你是如何系统的学习it技术的呢。 一、DB Problems 数据库数据类型与java中数据类型对应问题&#xff1f; MySql数据库和java…

暴风影音播放视频显示连接服务器失败,暴风影音出现无法观看MKV格式的详细解决方法...

暴风影音是款很不错的播放器&#xff0c;很多朋友们都喜欢使用&#xff0c;包括小编也很喜欢使用&#xff0c;那么暴风影音中出现无法观看MKV格式该怎么处理呢?以下就带来了暴风影音出现无法观看MKV格式的详细解决方法。 周所周知&#xff0c;暴风影音是一款非常强大的播放器&…

real解码器 v2015.08

real解码器是一款支持多种主流媒体格式以及视频播放器的播放插件也叫解码。有了它&#xff0c;只要你的播放器需要解码real文件播放视频时&#xff0c;real解码器是可以直接播放&#xff0c;不需要用户再去下载其他任何插件的&#xff0c;使用方便&#xff0c;而且文件小&#…

【cgal4.4编译以及安装】

[https://doc.cgal.org/4.4/Manual/installation.html#secprerequisites] cgal4.4编译以及安装 系统要求 5 Supported Compilers In order to build the CGAL libraries, you need a C compiler. CGAL 4.4 is supported for the following compilers/operating systems: Com…

隐马尔科夫模型

隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model, HMM)可以由观测序列推断出概率最大的状态序列. HMM中的变量可分为两组: 状态变量(隐变量): { y 1 , y 2 , . . . , y n } \left \{ y_{1},y_{2},...,y_{n}\right \} {y1​,y2​,...,yn​};序列标注问题中的标注. 观察变量…