【问题标题】:Looking for time and space effective algorithm to convert any integer number into binary value寻找时间和空间有效的算法将任何整数转换为二进制值
【发布时间】:2020-06-03 17:25:27
【问题描述】:

我完全是编程新手,这是我在在线社区中发布的第一个问题。我已经使用 JavaScript 编写了一个函数来将任何整数转换为二进制值。

function number2Binary(inputNumber){
var digitsArray=[];
if(inputNumber === 0 || inputNumber === 1)
{
  return inputNumber;
}
while(inputNumber>0){
  var bit = inputNumber%2;
  inputNumber= parseInt(inputNumber/2);
  digitsArray.push(bit);
}
return digitsArray.reverse().join(" ");  
}
number2Binary(2);

我很确定这可能不是最佳解决方案。有人可以为这个问题提出更好的解决方案吗? 附加问题: 1. 我在脚本中使用了一个 while 循环。如何计算while循环的时间复杂度?

【问题讨论】:

    标签: javascript while-loop time-complexity space-complexity


    【解决方案1】:

    由于 JavaScript 中的一切都是对象,所以数字也是对象,因此您可以调用它们的方法。

    对于数字,Number.prototype.toString 接受一个参数,即基数。

    如果您在 inputNumber 变量中有您的值,那么您可以调用 inputNumber.toString(2)

    您也可以对硬编码值执行相同操作:1.1.toString(2)

    如果要打印常量整数,请小心,因为第一个点将被解析为小数点,因此您必须编写 (1).toString(2)1.0.toString(2) 或只写 1..toString(2) 才能显示硬编码数字。

    【讨论】:

      【解决方案2】:

      简单快速的算法

      foo = 42
      console.log(foo.toString(2))
      

      【讨论】:

        【解决方案3】:

        如果你想要数字的字符串版本,你可以有

        Long.toString(42, <base>);
        

        例如,

        System.out.println(Long.toString(30, 2));
        

        产生

        11110
        

        如果你想要一个整数数组,你可以输入

        int[] num = Long.toString(<num>, <base>).chars().map(c->c-'0').toArray();
        

        【讨论】:

        • 这段代码看起来更像 Java 而不是 JavaScript :) 美丽的语言 Java!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-02
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 2012-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多