虾皮笔试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

相关推荐

05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着接:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务