命令合法性

仅符合以下规则,命令合法:

命令为小写字母

可用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();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值