js解决粉刷墙壁的问题



求解,这个问题通过js如何解答,下面是我写的代码,但是通过率只有21.67%,实在是不知道问题出在哪里,也不知道是哪些案例没有通过,希望大神解答,或者是提供下没有通过的案例,拜谢。。。
(function(line=readline()){
    var lines = line.split(" ");
    let lineNum = Number(lines[0]),
        str = String(lines[1]);
    // 如果n > 10W || n < 1 || n != str.length,则不执行后面的代码
    if(lineNum > 100000 || lineNum < 1 || lineNum != str.length) return;
    if(lineNum % 2 == 0){
        //如果n为2的倍数,则判断(左侧刷为蓝色+右侧刷为红色)与 全部刷为红色或蓝色 的最少次数
        console.log(Math.min(getObj(str), getObj(str.substring(0,lineNum/2),"red") + getObj(str.substring(lineNum/2),"blue")));
    }else{
        //如果n不是2的倍数,则判断全部刷为红色或者蓝色的最少粉刷次数
        console.log(getObj(str));
    }
}())

// str表示要粉刷的格子,color表示要粉刷成什么颜色
function getObj(str, color){
    // 定义一个变量,存储粉刷红色或者蓝色的次数
    let obj = {"blue":0,"red":0};
    //获取当前字符串中红色格子和蓝色格子的数量
    str.split("").forEach(el=>{
        if(el === "1"){
            obj["blue"]++;
        }else{
            obj["red"]++;
        }
    })
    if(!color){
        // 如果不区分粉刷成哪种颜色,则取当前那种颜色的格子数量少
        return Math.min(obj["blue"], obj["red"]);
    }else{
        // 返回需要粉刷颜色的格子数量
        return Number(obj[color]);
    }
}

#笔试题目#
全部评论
如果能提供下没有通过的案例,我自己去研究也可以,再次拜谢。。。
点赞 回复 分享
发布于 2021-03-18 21:17
额 去掉左边的1和右边的0(因为没有意义) 然后返回剩下部分的最小0或1的个数
点赞 回复 分享
发布于 2021-03-18 21:47
看这个帖子有题解 https://www.nowcoder.com/discuss/617794?type=all&order=time&pos=&page=1&channel=-1&source_id=search_all_nctrack
点赞 回复 分享
发布于 2021-03-20 00:07

相关推荐

10-17 12:16
同济大学 Java
7182oat:快快放弃了然后发给我,然后让我也泡他七天最后再拒掉,狠狠羞辱他一把😋
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务