牛客网算法之反转数字

题目描述

将给出的32位整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321

你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数,则其数值范围为[−2^{31}, 2^{31} − 1][231,2311]。翻转可能会导致溢出,如果反转后的结果会溢出就返回 0。
function reverse( x ) {
    if(x === 0){
        return 0
    }
    var res;
    if(x>0){
        res = parseInt([...[x].toString()].reverse().join(''));
    }else{
        res = -parseInt([...[x].toString()].reverse().join(''));
    }
    if(res > Math.pow(-2,31) && res< Math.pow(2,31)-1){
        return res
    }else{
        return 0
    }
    return res;
}

  更简便的解法二:

/**
  * 
  * @param x int整型 
  * @return int整型
  */
function reverse( x ) {
    let negativeFlag = 1;
    if(x < 0){
        x = -x;
        negativeFlag = -1;
    } 
    //生成数组实例 Array.from
    let resultString = Array.from(x + '').reverse().join("");
    let result = parseInt(resultString);
    
    return negativeFlag < 0 ? -result : result;
}
module.exports = {
    reverse : reverse
};

  

posted @ 2021-04-25 23:01  TangTaue  阅读(126)  评论(0编辑  收藏  举报