虾皮笔试9.6 与或逻辑那道题,过75%

public static long GetNumOfExpress(String express, boolean desired) {
        // write code here
        long re = 0;
        if(express.length()==1){
            if(desired&&express.charAt(0)=='1'){
                return 1;
            }
            else if(desired&&express.charAt(0)=='0'){
                return 0;
            }
            else if((!desired)&&express.charAt(0)=='0'){
                return 1;
            }
            else{
                return 0;
            }
        }
        for(int i=0;i<express.length();i++){
            if(i%2!=0){
                char c = express.charAt(i);
                if(c=='&'){
                    if(desired){
                        re += GetNumOfExpress(express.substring(0,i),true)*GetNumOfExpress(express.substring(i+1),true);
                    }else{
                        re += GetNumOfExpress(express.substring(0,i),true)*GetNumOfExpress(express.substring(i+1),false);
                        re += GetNumOfExpress(express.substring(0,i),false)*GetNumOfExpress(express.substring(i+1),true);
                        re += GetNumOfExpress(express.substring(0,i),false)*GetNumOfExpress(express.substring(i+1),false);
                    }
                }else if(c == '|'){
                    if(desired){
                        re += GetNumOfExpress(express.substring(0,i),true)*GetNumOfExpress(express.substring(i+1),true);
                        re += GetNumOfExpress(express.substring(0,i),true)*GetNumOfExpress(express.substring(i+1),false);
                        re += GetNumOfExpress(express.substring(0,i),false)*GetNumOfExpress(express.substring(i+1),true);
                    }else{
                        re += GetNumOfExpress(express.substring(0,i),false)*GetNumOfExpress(express.substring(i+1),false);
                    }
                }else{
                    if(desired){
                        re += GetNumOfExpress(express.substring(0,i),true)*GetNumOfExpress(express.substring(i+1),false);
                        re += GetNumOfExpress(express.substring(0,i),false)*GetNumOfExpress(express.substring(i+1),true);
                    }else{
                        re += GetNumOfExpress(express.substring(0,i),true)*GetNumOfExpress(express.substring(i+1),true);
                        re += GetNumOfExpress(express.substring(0,i),false)*GetNumOfExpress(express.substring(i+1),false);
                    }
                }
            }
            
        }
        return re;
    }

#Shopee##笔经#
全部评论
全排列有全过的嘛
点赞
送花
回复
分享
发布于 2021-09-06 21:19

相关推荐

头像
不愿透露姓名的神秘牛友
04-02 21:36
点赞 评论 收藏
转发
1 3 评论
分享
牛客网
牛客企业服务