僅符合以下規則,命令合法:
命令爲小寫字母
可用AND,NOT,OR連接命令,NOT可在開頭,如a AND NOT b
(AND,OR NOT不能連續)
輸入多行命令,輸出0或1,0代表命令不合法,1代表合法
輸入用例
a AND AND b A AND b a and b a AND b a AND b OR c OR NOT d
輸出:0 0 0 1 1
import java.util.Scanner;
public class Main {
public static int len(String []q,String p,int i){
int n=p.length();
switch (n){
case 1://判斷命令合法性
char c=p.charAt(0);
if(c<'a'||c>'z')return 0;
else break;
case 2:
if(!p.equals("OR")) {
System.out.println("不是OR");
return 0;
}
if(q[0].equals("OR")) {
System.out.println("OR不能在開頭");
return 0;
}
else break;
case 3:
if(q[0].equals("AND")) return 0;
if(p.equals("AND")||p.equals("NOT")){
if(q[i].equals(p)&&q[i+1].equals(p)&&i<q.length-1)//連續AND NOT
return 0;
if(i==(q.length-1))return 0;//位於最後
if(p.equals("NOT")&&(q[i+1].length()!=1))
return 0;
}else return 0;
default:
break;
}
return 1;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String s=in.nextLine();
String []q=s.split(" ");
for(int i=0;i<q.length;i++){
int f=len(q,q[i],i);
if(f==0) {
System.out.println(0);
break;
}
if((i==q.length-1)&&f==1)
System.out.println(1);
}
}
in.close();
}
}