这是我参与8月更文挑战的第18天,活动详情查看:8月更文挑战
学生出勤记录 I
原题:leetcode-cn.com/problems/st…
给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:
'A':Absent,缺勤
'L':Late,迟到
'P':Present,到场
如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:
按 总出勤 计,学生缺勤('A')严格 少于两天。
学生 不会 存在 连续 3 天或 3 天以上的迟到('L')记录。
如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。
示例 1:
输入:s = "PPALLP"
输出:true
解释:学生缺勤次数少于 2 次,且不存在 3 天或以上的连续迟到记录。
示例 2:
输入:s = "PPALLL"
输出:false
解释:学生最后三天连续迟到,所以不满足出勤奖励的条件。
提示:
1 <= s.length <= 1000
s[i] 为 'A'、'L' 或 'P'
复制代码
题目分析
- ‘P’ 这个意义不大,可以忽略不计,主要影响考勤的是A和L
- 从示例1-2可知,缺勤大于等于2、连续迟到3次即为缺勤;反之不满足条件的即得出勤奖励
代码实现
class Solution:
def checkRecord(self, s: str) -> bool:
n=s.count("A")
m=s.count("LLL")
if n>=2 or m>=1:
return False
return True
复制代码
分析:
`
实际是根据示例来解题的,也就是说只要统计A缺勤次数大于等于2和LLL连续缺勤次数大于等于1即为False;
从执行结果来看,效率一般,并不是很理想;这也是最简单的解题思路,但是还是有两次执行失败。
`
1、第一次失败是理解失败,A出现两次即false,
2、第二次失败还是裂解没到位,LLL可以出现多次。
总结
不管是编程还是算法、又或是设计框架,总之需要先理清思路、弄明白需求,才能尽可能保证少犯错。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END