https://leetcode.com/problems/student-attendance-record-i Easy

Условие

Дана строка s, представляющая записи посещаемости студента, где:

A означает "Absent" (отсутствует),

L означает "Late" (опоздал),

P означает "Present" (присутствует).

Студент может получить награду, если его запись посещаемости:

• Не содержит более одного символа A (отсутствие),

• Не содержит три или более подряд идущих символа L (опоздание).

Верните true, если студент может получить награду, и false в противном случае.

Примеры

Input: s = "PPALLP” Output: true Explanation: Строка содержит только одну 'A' и не имеет трех подряд идущих 'L', поэтому студент может получить награду.

Input: s = "PPALLL” Output: false Explanation: Строка содержит три подряд идущих '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.