其他分享
首页 > 其他分享> > leetcode刷题---字符串---学生出勤记录Ⅰ

leetcode刷题---字符串---学生出勤记录Ⅰ

作者:互联网

给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:

'A' : Absent,缺勤
'L' : Late,迟到
'P' : Present,到场

如果一个学生的出勤记录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。

你需要根据这个学生的出勤记录判断他是否会被奖赏。

示例 1:

输入: “PPALLP”
输出: True

示例 2:

输入: “PPALLL”
输出: False

这题很简单,直接定义一个数组来存放数据学生出勤数据即可。

class Solution {
    public boolean checkRecord(String s) {
        int[] alp = new int[3];
        int leng = s.length();

        for(int i=0;i<leng;i++){
            if(s.charAt(i) == 'A'){
                alp[0]++;
                if(alp[0]>1)return false;
            }
            if(s.charAt(i) == 'L'){
                if(i<leng-2){
                    if(s.charAt(i+1)== 'L'&&s.charAt(i+2)== 'L')return false;
                }
            }
        }
        return true;
 
    }
}

此外题解还有用到了indexof的写法

解决这个问题最简单的方法就是统计字符串中 AAA 的数目并检查 LLL 是否是给定字符串的一个子串。如果 A的数目比 2 少且 LLL 不是给定字符串的一个子串,那么返回 true,否则返回 false。

Java 中indexOfindexOfindexOf 方法可以用来检查一个串是否是另一个串的子串。如果找不到子串,那么返回 -1,否则返回这个字符串第一次出现的位置。

public class Solution {
    public boolean checkRecord(String s) {
        int count=0;
        for(int i=0;i<s.length() && count<2 ;i++)
            if(s.charAt(i)=='A')
                count++;
        return count<2 && s.indexOf("LLL")<0;
    }
}

作者:LeetCode
链接:https://leetcode-cn.com/problems/student-attendance-record-i/solution/xue-sheng-chu-qin-ji-lu-i-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/student-attendance-record-i
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

标签:子串,charAt,int,---,出勤,字符串,leetcode,alp,刷题
来源: https://blog.csdn.net/weixin_46428711/article/details/111340645