小Hi的算法课老师每次上课都会统计小Hi的出勤记录。迟到会被记录一个L,缺席会被记录一个A,按时上课会被记录一个O。
一学期结束,小Hi的出勤记录可以看成是一个只包含LAO的字符串,例如"OOOOLOOOLALLO……"。
如果小Hi整学期缺席不超过1次,并且没有连续3次迟到,小Hi的出勤记录就算合格。
现在给出小Hi的出勤记录,你能判断他是否合格么?
Input
输入第一行包含一个整数T(1 <= T <= 10),代表测试数据的组数。
以下T行每行一个程度不超过100的字符串S,代表小Hi的出勤记录。
Output
对于每一份出勤记录,输出YES或者NO表示该份记录是否合格。
Sample Input
3
LLOLLALL
OLLLOOOO
OOAAOOOO
Sample Output
YES
NO
NO
import java.util.*; public class Main { static Scanner in = new Scanner(System.in); static boolean com(int pos,String str){ if(str.substring(pos, pos+3).equals("LLL")) return true; else return false; } public static void main(String[] args) { int k=in.nextInt(); int[] d=new int[100]; while (k-->0) { String s=in.next(); int cntA=0,pos=0; boolean f=false; for (int i = 0; i < s.length(); i++) { if(s.charAt(i)=='A') cntA++; if(s.charAt(i)=='L'){ pos=i; if(pos<=s.length()-3&&com(pos,s)){ f=true; break; } } } if(cntA<=1&&!f){ System.out.println("YES"); } else{ System.out.println("NO"); } } } }
这里判断三个连续的字符串是否相等我另外写了一个小方法,并且用了subString,个人觉得还是挺简单的