https://leetcode.com/problems/student-attendance-record-i | Easy |
---|
Дана строка s
, представляющая записи посещаемости студента, где:
• A
означает "Absent" (отсутствует),
• L
означает "Late" (опоздал),
• P
означает "Present" (присутствует).
Студент может получить награду, если его запись посещаемости:
• Не содержит более одного символа A
(отсутствие),
• Не содержит три или более подряд идущих символа L
(опоздание).
Верните true
, если студент может получить награду, и false
в противном случае.
Input:
s = "PPALLP”Output:
trueExplanation:
Строка содержит только одну 'A' и не имеет трех подряд идущих 'L', поэтому студент может получить награду.
Input:
s = "PPALLL”Output:
falseExplanation:
Строка содержит три подряд идущих 'L', поэтому студент не может получить награду.
fun checkRecord(s: String): Boolean {
var absentCount = 0
// Проходим по строке и проверяем условия
for (i in s.indices) {
// Увеличиваем счетчик, если встречаем 'A'
if (s[i] == 'A') absentCount++
// Если количество 'A' превышает 1, возвращаем false
if (absentCount > 1) return false
// Проверяем, есть ли три подряд идущих 'L'
if (i >= 2 && s[i] == 'L' && s[i - 1] == 'L' && s[i - 2] == 'L') {
return false
}
}
// Если все условия выполнены, возвращаем true
return true
}
O(n) — Один проход по строке длины n.