[LeetCode]每日一题551. 学生出勤记录 I

这是我参与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;

从执行结果来看,效率一般,并不是很理想;这也是最简单的解题思路,但是还是有两次执行失败。
`

clipboard.png

1、第一次失败是理解失败,A出现两次即false,

2、第二次失败还是裂解没到位,LLL可以出现多次。

总结

不管是编程还是算法、又或是设计框架,总之需要先理清思路、弄明白需求,才能尽可能保证少犯错。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享