转载自Leet
Code
题目描述
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:
- 'A' : Absent,缺勤 - 'L' :
Late,迟到 - 'P' : Present,到场
如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤记录判断他是否会被奖赏。
示例 1: >输入: "PPALLP"
>输出:
True
示例 2: >输入: "PPALLL"
>输出:
False
我的代码
\(T(N) = O(N)\), \(S(N) = O(1)\)
{.line-numbers}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class MySolution551 { public boolean checkRecord(String s) { int countA = 0; boolean lastIsL = false; boolean lastLastIsL = false; for (char ch:s.toCharArray()) { if (ch=='A') countA++; if (countA>=2) return false; if (ch=='L'&&!lastIsL&&!lastLastIsL) lastLastIsL = true; else if (ch=='L'&&!lastIsL&&lastLastIsL) lastIsL = true; else if (ch!='L'&&(lastIsL||lastLastIsL)) { lastIsL = false; lastLastIsL = false; } else if (ch=='L'&&lastIsL&&lastLastIsL) return false; } return true; } }
|