js-daily-study icon indicating copy to clipboard operation
js-daily-study copied to clipboard

5.[js] 将整数中每位上的数字进行反转

Open 44021987 opened this issue 6 years ago • 3 comments
trafficstars

要求:
1、数值范围为 [−Math.pow(2,31),  Math.pow(2,31) − 1],如果参数反转后溢出那么就返回 0
2、数字反转:123 -> 321; -123 -> -321; 120 -> 21; -8 -> -8; -85 -> -58

44021987 avatar May 10 '19 06:05 44021987

   function getNum(num){
        if(num>Math.pow(2,31) && num < -Math.pow(2,31)){
            return 0
        }else{
            return num>0?backNum(num):-backNum(-num);
        }
    }
    function backNum(num){
        return parseInt(num.toString().split('').reverse().join(''));
    }
    console.log(getNum(123));
    console.log(getNum(-123));
    console.log(getNum(120));
    console.log(getNum(-8));
    console.log(getNum(-85));

恐怖如斯!

chenbimo avatar May 10 '19 07:05 chenbimo

 const reverse = function (x) {
    const max = Math.pow(2, 31)
    let b = 0
    while (x) {
      b = b * 10 + (x % 10)
      x = (x / 10) | 0
    }
    if (b > max - 1 || b < -max) return 0
    return b
  };

44021987 avatar May 10 '19 07:05 44021987

function getNum(num){
        num = num>0?backNum(num):-backNum(-num);
        return (num>Math.pow(2,31)-1 || num<-Math.pow(2,31))?0:num;
    }
    function backNum(num){
        return parseInt(num.toString().split('').reverse().join(''));
    }

I-find-you11 avatar May 10 '19 08:05 I-find-you11