为什么此代码不会被hackerrank测试接受,结果期望为3,而将数字439转换为二进制字符串则结果为2。
任务:https://www.hackerrank.com/challenges/30-binary-numbers/problem?isFullScreen=true
我的代码(在测试用例2-> input = 439上失败):
function main() {
const n = parseInt(readLine(), 10);
const nBinary = n.toString(2);
const nBinarySplit = nBinary.split("");
let count = 0;
for (let i = 0; i < nBinarySplit.length; i++) {
if (nBinarySplit[i] === '1') {
count++;
} else {
break;
}
}
console.log(count);
}
答案 0 :(得分:1)
一些捷径解决方案:
function main() {
const n = parseInt(readLine(), 10);
const nBinary = n.toString(2);
const nBinarySplit = nBinary.split("0");
let result = nBinarySplit.reduce((r,s) => r > s.length ? r : s.length, 0);
console.log(result);
}