LeetCode刷题551-简单-学生出勤记录 I

简介: LeetCode刷题551-简单-学生出勤记录 I


1.png


☀️前言☀️

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

第一遍,不求最优解,但求能过!!!


🙀作者简介🙀

大家好,我是布小禅,一个尽力让无情的代码变得生动有趣的IT小白,很高兴能偶认识你,关注我,每天坚持学点东西,我们以后就是大佬啦!

📢 :❤布小禅❤

📢 作者专栏:

❤Python❤

❤Java❤

❤力扣题❤

这是我刷第 20/100 道力扣简单题


💗一、题目描述💗

给你一个字符串 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’

通过次数34,327提交次数62,973

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/student-attendance-record-i


💁二、题目解析💁

分析题意⭐️

因为题目上没有说到场,所以设置两个变量la接收迟到和缺勤的次数💁

记住这句话 **不能连续迟到三天以及以上 **‼️

那么怎么实现呢⁉️

我们可以让 l 变量迟到一次+1,然后下一次如果是缺勤或者到场,就将 l 变量重新赋值为0 🏁

理论成立,实战开始。注意‼️这不是演习‼️‼️‼️

发车啦发车啦!快上车!🚗

我们先遍历数组,判断元素

如果是 ‘P’ ✔️ 就将记录迟到的变量 l 赋值为0

如果是 ‘A’✔️ 就将记录迟到的变量 l 赋值为0,并将记录缺勤的变量 a的值+1

如果是 ‘L’✔️ 就将 l的值变量+1


🏃三、代码实现🏃

☁️1️⃣. python☁️

class Solution:
    def checkRecord(self, s: str) -> bool:
        l = 0
        a = 0
        for i in s:
            if i=='L':
                l+=1
                if l>=3:
                    return False
            elif i=='A':
                a+=1
                l=0
                if a>=2:
                    return False
            elif i=='P':
                l=0
        return True


⚡️2️⃣. java⚡️

class Solution {
    public boolean checkRecord(String s) {
        int p,a,l;
        p=0;
        a=0;
        l=0;
        for(int i=0;i<s.length();i++){
            if (s.charAt(i)=='P') {
                p++;
                l=0;
            }
            else if(s.charAt(i)=='A') {
                a++;
                l=0;
                if(a>=2){
                    return false;
                }
            }
            else {
                l++;
                if(l>=3)
                    {
                        return false;
                    }
                }
            }
        return true;
    }
}


❄️3️⃣. C#❄️

public class Solution {
    public bool CheckRecord(string s) {
        int p,a,l;
        p=0;
        l=0;
        a=0;
        foreach(char _s in s){
            if (_s=='P') {
                p++;
                l=0;
            }
            else if(_s=='A') {
                a++;
                l=0;
                if(a>=2){
                    return false;
                }
            }
            else {
                l++;
                if(l>=3)
                    {
                        return false;
                    }
                }
            }
            return true;
        }
    }


🌔结语🌔

坚持最重要,每日一题必不可少!😸

1.png

目录
打赏
0
0
0
0
5
分享
相关文章
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
6月前
|
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
70 6
|
6月前
|
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
68 4
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
140 2
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
86 1
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
6月前
|
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
84 7
|
6月前
|
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
66 5
|
6月前
|
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
41 4
|
6月前
|
【Leetcode刷题Python】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
Leetcode题目"剑指 Offer 21. 调整数组顺序使奇数位于偶数前面"的两种Python解决方案,一种是使用双端队列调整数组顺序,另一种是使用双指针法将奇数移到数组前半部分,偶数移到后半部分。
34 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等