javascript中的反向十进制数字

时间:2011-06-15 00:48:40

标签: javascript

如何使用按位方式反转数字的数字?

输入:

x = 123; 

输出:

x = 321; 

这是怎么做的?

14 个答案:

答案 0 :(得分:19)

那不是反转位;这颠倒了十进制数字的顺序,这是完全不同的。这是一种方式:

var x = 123;
var y = 0;
for(; x; x = Math.floor(x / 10)) {
    y *= 10;
    y += x % 10;
}
x = y;

如果你真的想要反转位,那就是:

x = ~x;

作为一项功能:

function reverse(n) {
    for(var r = 0; n; n = Math.floor(n / 10)) {
        r *= 10;
        r += n % 10;
    }
    return r;
}

答案 1 :(得分:14)

如果你想做一个简单的逆转:

var x = 123;
var y = x.toString();
var z = y.split("").reverse().join("");
var aa = Number(z);
document.write(aa);

http://jsfiddle.net/jasongennaro/gV39e/

答案 2 :(得分:6)

这是另一种方式......

var reversed = num.toString().split('').reverse().join('');

jsFiddle

如果您想再次Number,请使用parseInt(reversed, 10)。但请注意,前导0在十进制数中并不重要,如果转换为Number,则会丢失它们。

答案 3 :(得分:3)

  

你也使用这个功能

function myfunction(a){
   var x=a.toString();
   var y= x.split("");
   var z=y.reverse();
   var result=z.join("");
     return result;

} MyFunction的(123);

答案 4 :(得分:2)

简单快捷的解决方案:我们假设您要反转一个数字4546.您将从每个部门提取10个提醒并将其附加到结果,直到数字为> 0.同时将num变量除以10来更新。

var x = '';
var num = 4546;
while(num>0){
 x = x + (num%10);
 num = parseInt(num/10);
}
console.log(x);

答案 5 :(得分:2)

  

反转正负整数

function reverseInt(n) {
 return parseInt(n.toString().split('').reverse().join()) * Math.sign(n)
}
  

如果n为-5,则Math.sign(n)==>将返回-1

     

如果n为5,则Math.sign(n)==>将返回1

答案 6 :(得分:1)

以下是JavaScript中用于处理整数或字符串的可逆数组函数:

function reverse(array)
{
    var left = null;
    var right = null;
    var length = array.length;
    for (left = 0, right = length - 1; left < right; left += 1, right -= 1)
    {
        var temporary = array[left];
        array[left] = array[right];
        array[right] = temporary;
    }
    return array;
}

function toDigitsArrayFromInteger(integer, isReverse)
{
    var digits = [];

    if (integer > 0)
    {
        var floor = window.Math.floor;
        while (integer > 0)
        {
            digits.push(floor(integer % 10));
            integer = floor(integer / 10);
        }

        // Array is populated in reverse order. Un-reverse it to make it normal.
        if (!isReverse)
        {
            digits = reverse(digits);
        }
    }
    else if (integer < 0)
    {
        digits = toDigitsArrayFromInteger(-integer, isReverse);
    }
    else if (integer === 0)
    {
        digits.push(0);
    }

    return digits;
}

function toDigitsArrayFromString(string, isReverse)
{
    var digits = [];

    string += ""; // Coerce to string.

    var i = null;
    var length = string.length;
    for (i = 0; i < length; i += 1)
    {
        var integer = parseInt(string.charAt(i), 10);
        if (isFinite(integer))
        {
            digits.push(integer);
        }
    }

    if (isReverse)
    {
        digits = reverse(digits);
    }

    return digits;
}

将数字作为数组后,您可以轻松地反转数组以从左侧或右侧开始获取数字。

字符串函数更通用,因为它可以在字符串中找到任何数字,而整数函数仅限于整数。

基准: http://jsperf.com/todigitsarray

这两个函数之间的基准测试表明,在Firefox 10和Chrome 12中,字符串函数比整数函数快30%到60%。在Opera 12中,整数函数稍微快了大约10%。

答案 7 :(得分:1)

BooleanExpression ? ifTrue : ifFalse

答案 8 :(得分:0)

<html>
<script>

function reverseInt(n){

        var r=0;
    while(n!=0){
        r*=10;
        r+=n%10;
        n=Math.floor(n/10);
}
return r;
}


</script>
</html>

答案 9 :(得分:0)

试试这个

var n = 352;
function loop(n, r){
    if(!n) return r;
    r = (r ? r * 10 : 0) + n % 10;
    return loop(Math.floor( n / 10), r);
}
console.log(loop(n));

答案 10 :(得分:0)

好的,如何在单线函数中使用和链接这些流行的技巧如下...

const reverseNum = num => +("" + ~~num.split("").reverse().join(""));

并称之为:

reverseNum(123); //321
reverseNum(423.09); //324
reverseNum(23305.1); //50332
reverseNum(89112); //21198
reverseNum(568434.2389); //434865

答案 11 :(得分:0)

这将Number x作为参数并返回相反的数字。

const reverse = (x) => Number(x.toString().split("").reverse().join(""));

答案 12 :(得分:0)

内存使用量:35.3 MB,不到leetcode.com上反向整数的JavaScript在线提交的100.00%。 运行时间:80毫秒,快于反向整数的JavaScript在线提交的61.48%。

时间复杂度为O(log10(n))

function reverse(x) {
  let rev = 0;
  const isNegative = Math.sign(x) === -1;
  const isOverflow = n => n > 2**31;
  x = Math.abs(x);

  while (x) {
    let pop = x % 10;
    x = Math.floor(x / 10);
    rev = rev * 10 + pop;

    if (isOverflow(rev)) {
      return 0;
    } 
  }

  return isNegative ? rev * -1 : rev;
}

答案 13 :(得分:-1)

下面的代码块可以解决问题

<script type = "text/javascript">

var input;

input=window.prompt ("Please enter a number to be reversed.");
x=input.length;

while(x > 0)
{

x=x-1;
document.write(input[x]);

}

</script>