551. [字符串]学生出勤记录 I
551. 学生出勤记录 I
一次遍历,计算字符串中字符‘A’的数量,然后再查看一下是否存在“LLL”子串即可。可以在循环时优化。
方法一:优化一次循环
// 执行用时: 0 ms , 在所有 Java 提交中击败了 100.00% 的用户
// 内存消耗: 36.5 MB , 在所有 Java 提交中击败了 85.58% 的用户
public class Solution {
public boolean checkRecord(String s) {
int count=0;
// 出现两个A时提前中断
for(int i=0;i<s.length() && count<2 ;i++)
if(s.charAt(i)=='A')
count++;
return count<2 && s.indexOf("LLL")<0;
}
}
方法二:正则表达式
// . : 匹配任何除了换行以外的单个字符。
// * : 匹配 0 个或者 大于 0 个 * 符号前面的表达式。
// .* : 匹配任何字符串
// a|b : 要么匹配 a 要么匹配 b
// 执行用时: 6 ms , 在所有 Java 提交中击败了 6.51% 的用户
// 内存消耗: 37.3 MB , 在所有 Java 提交中击败了 5.12% 的用户
public class Solution {
public boolean checkRecord(String s) {
return !s.matches(".*(A.*A|LLL).*");
}
}

浙公网安备 33010602011771号