leetcode刷题记录之551

551、学生出勤记录 I

给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:
  1、‘A’ : Absent,缺勤
  2、‘L’ : Late,迟到
  3、‘P’ : Present,到场
如果一个学生的出勤记录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤记录判断他是否会被奖赏。
示例 1:

输入: "PPALLP"
输出: True

示例 2:

输入: "PPALLL"
输出: False

难度:简单  题目地址:https://leetcode-cn.com/problems/student-attendance-record-i/

1、C语言代码:
bool checkRecord(char * s){
    int c = 0;
    for(int i = 0;s[i] != '\0';i++){
        if(s[i] == 'L' && s[i+1] == 'L' && s[i+2] == 'L')
            return false;
        if(s[i] == 'A')
            c++;
        if(c >= 2)
            return false;
    }
    return true;
}

解释: 遍历字符串,如果有超过3个连续的’L’或者有超过2个’A’,则返回false,否则返回true。

知识点回顾: 无。

2、Java代码:
class Solution {
    public boolean checkRecord(String s) {
        return s.indexOf("A") == s.lastIndexOf("A") && !s.contains("LLL");
    }
}

解释: 如果数组中没有超过2个’A’或者不存在"LLL",则返回true,否则返回false。

知识点回顾:
1、indexOf() 方法有以下四种形式:

  • public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

2、lastIndexOf() 方法有以下四种形式:

  • public int lastIndexOf(int ch): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • public int lastIndexOf(int ch, int fromIndex): 返返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • public int lastIndexOf(String str): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
  • public int lastIndexOf(String str, int fromIndex): 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

3、contains()函数用于确定一个字符串是否包含指定的子串。

3、Python代码:
class Solution:
    def checkRecord(self, s: str) -> bool:
       return s.count('A')<=1 and 'LLL' not in s 

解释: 类似于Java的求解思路。

知识点回顾: 无。

4、JavaScript代码:
/**
 * @param {string} s
 * @return {boolean}
 */
var checkRecord = function (s) {
    return s.indexOf('A') === s.lastIndexOf('A') && s.indexOf('LLL') === -1
};

解释: 类似于Java的求解思路。

知识点回顾:
1、lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,如果指定第二个参数 start,则在一个字符串中的指定位置从后向前搜索。
注意: 该方法将从后向前检索字符串,但返回是从起始位置 (0) 开始计算子字符串最后出现的位置。 看它是否含有字符串。开始检索的位置在字符串的 start 处或字符串的结尾(没有指定 start 时)。
如果没有找到匹配字符串则返回 -1 。
注意:lastIndexOf() 方法是区分大小写的!
语法:string.lastIndexOf(searchvalue,start)
searchvalue:必需。规定需检索的字符串值。
start:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。
返回值:查找的字符串最后出现的位置,如果没有找到匹配字符串则返回 -1。
2、indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
注意: indexOf() 方法区分大小写。
语法:string.indexOf(searchvalue,start)
searchvalue:必需。规定需检索的字符串值。
start:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length - 1。如省略该参数,则将从字符串的首字符开始检索。
返回值:查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值