牛客网算法之反转数字
题目描述
将给出的32位整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321
你有注意到翻转后的整数可能溢出吗?因为给出的是32位整数,则其数值范围为[−2^{31}, 2^{31} − 1][−231,231−1]。翻转可能会导致溢出,如果反转后的结果会溢出就返回 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 };