求解,这个问题通过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) 回帖