求解,这个问题通过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]); } }
全部评论
(3) 回帖