命令合法性

僅符合以下規則,命令合法:

命令爲小寫字母

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章