目录
题目描述
输入描述
输出描述
用例
题目解析
算法源码
公司用一个字符串来表示员工的出勤信息
现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:
用户的考勤数据字符串
如:
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 |
| 说明 | 无 |
逻辑分析题,逻辑请看源码
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});const lines = [];
let n;
rl.on("line", (line) => {lines.push(line);if (lines.length === 1) {n = parseInt(lines[0]);}if (n && lines.length === n + 1) {lines.shift();printResult(lines);lines.length = 0;}
});function printResult(records) {records.forEach((record) => {const arr = record.split(" ");console.log(isAward(arr));});
}function isAward(arr) {let absentCount = 0;let total = 0;let flag = true;for (let i = 0; i < arr.length; i++) {switch (arr[i]) {case "absent":if (++absentCount > 1) flag = false;total++;break;case "late":if (i > 0 && arr[i - 1] === "late") flag = false;total++;break;case "leaveearly":if (i > 0 && arr[i - 1] === "leaveearly") flag = false;total++;break;}if (!flag) return false;if (i >= 7 && arr[i - 7] !== "present") total--;if (total > 3) return false;}return true;
}