首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当函数是变量时,将一个看起来像二进制的数字分割成一个数组--我需要转换还是什么?

当函数是变量时,将一个看起来像二进制的数字分割成一个数组--我需要转换还是什么?
EN

Stack Overflow用户
提问于 2022-09-01 15:45:32
回答 1查看 63关注 0票数 0

当函数是一个数字时,我不能分割一串数字--为什么?你是怎么做到的?

我在尝试https://leetcode.com/problems/number-of-1-bits/

Ways to split a Number into an Array

接受答复:

,让我们看看它是如何工作的

num +‘.’.split(‘)的工作原理如下

  1. num是一个空数组,它不是一个数字
  2. ,所以,我们有一个数字的和,而不是一个数字,我们将把num和[] string
  3. num转换为'969',[]到string是‘(empty)
  4. '969’+‘= '969'

num.toString() +‘.’.split(‘)的工作原理如下

  1. num.toString()是一个空数组
  2. ,所以,我们有一个字符串的和,而不是一个字符串,我们将[]转换为string‘(empty)
  3. '969’+‘= '969'

String(num).split('')的工作方式类似于

  1. 允许将num转换为字符串
  2. ,并将其拆分为‘
  3. of split is '9’、'6‘、'9'

当然,当我尝试时,it....it不起作用:

代码语言:javascript
复制
var hammingWeight = function(n) {
    let oneBits = String(n).split('');
    console.log(oneBits)
};

hammingWeight(0000011110)

这里发生了什么事?为什么不起作用?

代码语言:javascript
复制
function hammingWeight(n) {
    let oneBits = String(n).split('');
    console.log(oneBits)
};

hammingWeight(0000011110)

为什么这个不行?

代码语言:javascript
复制
function hammingWeight(n) {
    let oneBits = n.toString().split('');
    console.log(oneBits)
};

hammingWeight(0000011110)

我不明白--这些数字是从哪里来的?

Binary to String in JavaScript

代码语言:javascript
复制
function hammingWeight(n) {
    const oneBits = String.fromCharCode(
          ...n.split(''))
    )
    console.log(oneBits)
};

hammingWeight(0000011110)

也不起作用!

EN

回答 1

Stack Overflow用户

发布于 2022-09-01 15:55:46

Leet网站要求一个整数,但它正在计算二进制1位的数量。

要满足所提供的方法,您必须:将数字转换为二进制字符串,将其拆分为单个位,只过滤1位,并返回长度。

代码语言:javascript
复制
/**
 * @param {number} n - a positive integer
 * @return {number} number of 1 bits present in the binary representation
 */
const hammingWeight = n => n.toString(2).split('').filter(v => v === '1').length

console.log(hammingWeight(11))         // 1011 => 3
console.log(hammingWeight(128))        // 10000000 => 1
console.log(hammingWeight(4294967293)) // 11111111111111111111111111111101 => 31

如果您想要支持二进制字符串输入,这要容易得多。您只需要接受一个字符串参数而不是一个整数。

代码语言:javascript
复制
/**
 * @param {string} bin - an unsigned binary integer string
 * @return {number} number of 1 bits present in the binary representation
 */
const hammingWeight = bin => bin.split('').filter(v => v === '1').length

console.log(hammingWeight('1011'))                             //  => 3
console.log(hammingWeight('10000000'))                         //  => 1
console.log(hammingWeight('11111111111111111111111111111101')) //  => 31

解释

详细说明,您的问题是在示例中发送八进制整数,而不是二进制字符串。

代码语言:javascript
复制
function hammingWeight(n) {
  let oneBits = String(n).split(''); // ['4','6','8','0']
  console.log(oneBits)
};

hammingWeight(0000011110) // Same as 011110 or 4680

您可以像这样以文字二进制整数的形式发送它,但仍然需要使用2 (二进制)的基值对其进行压缩:

代码语言:javascript
复制
function hammingWeight(n) {
  let oneBits = n.toString(2).split(''); // ['1','1','1','1','0']
  console.log(oneBits)
};

hammingWeight(0b0000011110) // Prefix literal binary number with '0b'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73572184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档