目录

题目要求

代码实现1

代码分析1

1、indexOf(String str)

2、lastIndexOf(String str)

3、contains(CharSequence s)

代码实现2

代码解释2


题目要求

给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

'A':Absent,缺勤
'L':Late,迟到
'P':Present,到场
如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:

按 总出勤 计,学生缺勤('A')严格 少于两天。
学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。
如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。

示例 1:

输入:s = "PPALLP"
输出:true
解释:学生缺勤次数少于 2 次,且不存在 3 天或以上的连续迟到记录。
示例 2:

输入:s = "PPALLL"
输出:false
解释:学生最后三天连续迟到,所以不满足出勤奖励的条件。

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

没思路,学习了评论区里的大佬的实现方法,在这里记录一下。

代码实现1

/*** 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:** 'A':Absent,缺勤* 'L':Late,迟到* 'P':Present,到场* 如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:** 按 总出勤 计,学生缺勤('A')严格 少于两天。* 学生 不会 存在 连续 3 天或 连续 3 天以上的迟到('L')记录。* 如果学生可以获得出勤奖励,返回 true ;否则,返回 false 。** 来源:力扣(LeetCode)* 链接:https://leetcode-cn.com/problems/student-attendance-record-i* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。*/
public class StudentRecord {public static void main(String[] args) {String s = "PPALLL";boolean b = checkRecord(s);System.out.println(b);}public static  boolean checkRecord(String s) {return s.indexOf("A") == s.lastIndexOf("A") && !s.contains("LLL");}}

代码分析1

代码主要就一句话,但我不会写,想不到。

来学学这句话:

return s.indexOf("A") == s.lastIndexOf("A") && !s.contains("LLL");

题目要求返回true或者false。在方法中就这一句话。

题目的关键在于:返回true的前提是:字符串中不能出现两次A 并且 不能连续出现三个L。

这里调用了3个方法,所以

1、indexOf(String str)

返回字符串中的str字符(或者字符串)第一次出现的位置,没有就返回-1。

2、lastIndexOf(String str)

返回字符串中str字符串出现的最后一次出现的位置,没有出现就返回-1。

有以下几种形式:

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

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

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

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

3、contains(CharSequence s)

返回类型为布尔类型,若包含指定序列,返回true,否则返回false。

代码实现2

class Solution {public boolean checkRecord(String s) {int absent=0;int late=0;for (int i=0;i<s.length();i++){if (s.charAt(i)=='A'){late=0;absent++;if (absent>1)return false;}else if (s.charAt(i)=='L'){late++;if (late>2)return false;}elselate=0;}return true;}
}

代码解释2

定义两个变量absent(记录A的次数) 和late (迟到L的次数)

利用for循环遍历字符串,字符串里面字符只能是A,P,L,如果是A或者P,说明不是L,,把late顺便置为0,如果A的次数absent超过2次,就返回false;如果late的值累计到达3也返回false。

[字符串题-java实现]LeetCode551. 学生出勤记录 I相关推荐

  1. leetcode551. 学生出勤记录 I

    给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个学生的出勤记录中不超过一个' ...

  2. LeetCode——552. 学生出勤记录 II(Student Attendance Record II)[困难]——分析及代码(Java)

    LeetCode--552. 学生出勤记录 II[Student Attendance Record II][困难]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 ( ...

  3. 字符串题目:学生出勤记录 I

    文章目录 题目 标题和出处 难度 题目描述 要求 示例 数据范围 解法 思路和算法 代码 复杂度分析 题目 标题和出处 标题:学生出勤记录 I 出处:551. 学生出勤记录 I 难度 2 级 题目描述 ...

  4. Java实现 LeetCode 551 学生出勤记录 I(暴力大法好)

    551. 学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个 ...

  5. C++Python描述 LeetCode 551. 学生出勤记录 I

    C++&Python描述 LeetCode 551. 学生出勤记录 I   大家好,我是亓官劼(qí guān jié ),在公众号.CSDN.GitHub.B站.华为开发者论坛等平台分享一些 ...

  6. 552. 学生出勤记录 II

    552. 学生出勤记录 II 可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 ...

  7. 551. 学生出勤记录

    551. 学生出勤记录 I 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late ...

  8. LeetCode 552. 学生出勤记录 II(动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个正整数 n,返回长度为 n 的所有可被视为可奖励的出勤记录的数量. 答案可能非常大,你只需返回结果mod 10^9 + 7的值. 学生出勤记录是只 ...

  9. 力扣 -- 551. 学生出勤记录 I 、 552. 学生出勤记录 II

    目录 551. 学生出勤记录 一 .题目描述 二. 实现思路以及代码 552. 学生出勤记录 II 一 .题目描述 二. 实现思路以及代码 551. 学生出勤记录 一 .题目描述 给你一个字符串 s  ...

最新文章

  1. linux c++ 服务器端开发面试必看书籍
  2. 9.9学python靠谱吗-走进小学教材,Python何德何能?9图对比道出真相
  3. Vue引用其他组件,但组件某些部分不需要时的简单处理
  4. mysql 数值类型 长度_mysql中的数据类型的长度
  5. JDK源码分析(三)——HashMap 下(基于JDK8)
  6. kafka学习总结之集群部署和zookeeper
  7. HDU1286 找新朋友【欧拉函数】
  8. Sql Server 2014 双节点群集无法切到其中一节点解决
  9. TCP/IP 域名系统DNS
  10. 3K水稻SNP数据集的简单利用
  11. 2022软考高项十大领域知识整理(四)-人力资源管理、干系人管理、采购管理
  12. 架构设计(8)—高可用架构设计
  13. h5跳转到 苹果 ios app store 应用商店 的APP详情页面
  14. HMACSHA加密方法
  15. 三相电检测电路c语言,三相缺相检测电路的原理分析
  16. JavaScript进阶篇③ — 浏览器对象、Dom对象
  17. Android多用户相关命令,android 5.0 创建多用户 双开多开应用(1)(示例代码)
  18. Linux雷鸟邮件,thunderbird雷鸟mail
  19. 根据关键字选出excel中匹配的数据
  20. 队列应用之热土豆传递问题Python

热门文章

  1. 中兴GWH-11 ZXV10 H108B的AD路由器获取超级用户密码
  2. c#文件名去掉后缀_C#如何从文件路径中分离出文件名以及文件扩展名
  3. MyEclipse2019 4破解
  4. 南京大学计算机实验教程,南京大学 计算机系统基础 课程实验 2018(PA0-1)
  5. 亚马逊家居行业中办公室家具市场前景分析及货源分享
  6. 互联网技术架构——画龙点睛
  7. 常见的python与爬虫面试题准备好了
  8. 江苏大学京江学院计算机怎么样,江苏大学京江学院是几本 学生评价怎么样好不好(10条)...
  9. Android热更新
  10. eLife:情绪学习对人脑记忆整合的回溯性促进机制