add: leetcode 0551 solution

This commit is contained in:
tphyhFighting
2021-08-17 17:30:59 +08:00
parent 2189396c54
commit d0f54e2bbd
3 changed files with 124 additions and 0 deletions

View File

@ -0,0 +1,24 @@
package leetcode
func checkRecord(s string) bool {
numsA := 0
maxL := 0
numsL := 0
for _, v := range s {
if v == 'L' {
numsL++
} else {
if numsL > maxL {
maxL = numsL
}
numsL = 0
if v == 'A' {
numsA++
}
}
}
if numsL > maxL {
maxL = numsL
}
return numsA < 2 && maxL < 3
}

View File

@ -0,0 +1,45 @@
package leetcode
import (
"fmt"
"testing"
)
type question551 struct {
para551
ans551
}
// para 是参数
type para551 struct {
s string
}
// ans 是答案
type ans551 struct {
ans bool
}
func Test_Problem551(t *testing.T) {
qs := []question551{
{
para551{"PPALLP"},
ans551{true},
},
{
para551{"PPALLL"},
ans551{false},
},
}
fmt.Printf("------------------------Leetcode Problem 551------------------------\n")
for _, q := range qs {
_, p := q.ans551, q.para551
fmt.Printf("【input】:%v 【output】:%v \n", p, checkRecord(p.s))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,55 @@
# [551. Student Attendance Record I](https://leetcode-cn.com/problems/student-attendance-record-i/)
## 题目
You are given a string s representing an attendance record for a student where each character signifies whether the student was absent, late, or present on that day. The record only contains the following three characters:
- 'A': Absent.
- 'L': Late.
- 'P': Present.
The student is eligible for an attendance award if they meet both of the following criteria:
The student was absent ('A') for strictly fewer than 2 days total.
The student was never late ('L') for 3 or more consecutive days.
Return true if the student is eligible for an attendance award, or false otherwise.
**Example 1:**
Input: s = "PPALLP"
Output: true
Explanation: The student has fewer than 2 absences and was never late 3 or more consecutive days.
**Example 2:**
Input: s = "PPALLL"
Output: false
Explanation: The student was late 3 consecutive days in the last 3 days, so is not eligible for the award.
**Constraints:**
- 1 <= s.length <= 1000
- s[i] is either 'A', 'L', or 'P'.
## 题目大意
给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:
- 'A'Absent缺勤
- 'L'Late迟到
- 'P'Present到场
如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:
按 总出勤 计,学生缺勤('A')严格 少于两天。
学生 不会 存在 连续 3 天或 3 天以上的迟到('L')记录。
如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。
## 解题思路
- 遍历字符串s求出'A'的总数量和连续'L'的最大数量
- 比较'A'的数量是否小于2并且'L'的连续最大数量是否小于3