leetcode551_Student_Attendance_Record1

学生出勤记录

You are given a string representing an attendance record for a student. The record only contains the following three characters:

'A' : Absent.
'L' : Late.
'P' : Present.

A student could be rewarded if his attendance record doesn’t contain more than one ‘A’ (absent) or more than two continuous ‘L’ (late).

You need to return whether the student could be rewarded according to his attendance record.

Example 1:

Input: “PPALLP”
Output: True

Example 2:

Input: “PPALLL”
Output: False

  • 1计数器解决
    分别记录缺勤和连续迟到的次数,如果当前遇到缺勤,那么缺勤计数器自增1,如果此时次数大于1了,说明已经不是优秀了,直接返回false,否则连续迟到计数器清零。如果当前遇到迟到,那么连续迟到计数器自增1,如果此时连续迟到计数器大于1了,说明已经不是优秀了,直接返回false。如果遇到正常出勤了,那么连续迟到计数器清零

  • 2index() lastindex()

//  需要使用 缺勤计数器 和 迟到计数器吗 我看完全不需要这样做
    public static boolean checkRecord(String s) {
        // 这样是最巧妙的
        return s.indexOf('A') == s.lastIndexOf('A') && s.contains("LLL");
    }

    // 第二种最普通的方法 
    public static boolean checkRecord2(String s) {
        int countA = 0; // 缺勤计数器
        int countL = 0; // 迟到计数器
        for (Character character : s.toCharArray()) {
            if (character == 'A'){
                countA++;
                if (countA > 1){
                    return false;
                }
                countL = 0;
            }
            else if (character == 'L'){
                countL++;
                if (countL > 2){
                    return false;
                }
            }
            else {
                countL = 0;
            }
        }
        return true;

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值