LeetCode:551.给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

题目:

  给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

‘A’:Absent,缺勤
‘L’:Late,迟到
‘P’:Present,到场
如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:

按 总出勤 计,学生缺勤(‘A’)严格 少于两天。
学生 不会 存在 连续 3 天或 3 天以上的迟到(‘L’)记录。
如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/student-attendance-record-i

题解:

  对函数输入字符串,遍历所有字符,首先应当判断这两种情况是否有“L”(迟到)计数,如果达到三次就应该返回false,判断连续则是通过定义一个L_count来计数,如果读到“L”加一,否则清零。判断是否缺勤则由通过计数‘A’是否达到2来判断。
问题bug:连续三天中如有一天缺勤,另外两天迟到,居然还算全勤?

class Solution:
    def checkRecord(self, s: str) -> bool:
        l = len(s)
        A_count = 0
        L_count = 0
        for i in range(l):
            if s[i] == 'A':
                L_count = 0
                A_count+=1
                if A_count == 2:
                    return False
            elif s[i] == 'L':
                    L_count+=1
                    if L_count == 3:
                        return False
            else:
                L_count = 0
                continue
        
        return True

# 测试代码
s = input("请输入信息:")
Sol = Solution()
res = Sol.checkRecord(s)

if res == True:
    print("true")
else:
    print("false")
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值