「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战」
前言
算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!
第一遍,不求最优解,但求能过!!!
一、学生出勤记录 I
一、题目描述
给你一个字符串 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) 链接:leetcode-cn.com/problems/st…
二、题目解析
分析题意:star:
因为题目上没有说到场,所以设置两个变量l和a接收迟到和缺勤的次数:information_desk_person:
记住这句话 **
不能连续迟到三天以及以上**:bangbang:那么怎么实现呢:interrobang:
我们可以让 l 变量迟到一次+1,然后下一次如果是缺勤或者到场,就将 l 变量重新赋值为0 :checkered_flag:
理论成立,实战开始。注意这不是演习
发车啦发车啦!快上车!
我们先遍历数组,判断元素
如果是 'P' :heavy_check_mark: 就将记录迟到的变量 l 赋值为0
如果是 'A':heavy_check_mark: 就将记录迟到的变量 l 赋值为0,并将记录缺勤的变量 a的值+1
如果是 'L':heavy_check_mark: 就将 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;
}
}