找出要更改为二进制数的位数,使其等于十进制数

这个这个

我一直在尝试编码挑战,但没有想到它的逻辑。

问题就像在给您的函数和争论中一样,这是一个包含信息的数组,例如

[56,011000]

因此,当我们运行此函数时,输出为1,因为仅需要更改二进制数(即011000)中的1位数字即可使其等于56。

同样,另一个测试用例是

[44,111111]

预期输出为3,因为只有3位数字需要更改二进制数以使其等于44。

我什至不认为逻辑,所以如果有人帮助我会更好:)

圣索纳瓦拉

这个问题有两个部分:

  1. 将十进制数转换为二进制
  2. 查找两个二进制字符串之间的不同数字位数

对于第一部分,您可以使用此处toString(2)描述方法例如:

console.log(Number(22).toString(2)); // prints "10110"

或者,您可以为此编写自己的函数。一种实现方法是,对于十进制数n,继续查找小于或等于n的2的最高幂,然后从n中减去它。

对于第二部分,您可以如下迭代两个字符串:

let binaryString1 = "101";
let binaryString2 = Number(22).toString(2); // "10110"

const maxLen = Math.max(binaryString1.length, binaryString2.length); // get the length of the longer string

// make sure both strings are of the same length
binaryString1 = binaryString1.padStart(maxLen, "0");
binaryString2 = binaryString2.padStart(maxLen, "0");

let diff = 0;
for (let i=0; i < maxLen; i++) {
    if (binaryString1.charAt(i) !== binaryString2.charAt(i)) {
        diff++;
    }
}
console.log(diff); // prints the number of differing chars

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章