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

相关推荐

bLanK的小号:建议自己写一个比较新颖的项目,比如思维导图,在线文档,仿造postman,仿造一个组件库
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客企业服务