haohaio
努力学习,艰苦奋斗
写写代码,记记笔记
原题链接
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例:
输入: 123 输出: 321
输入: -123 输出: -321
输入: 120 输出: 21
|
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解法一
var reverse = function (x) { let rev = 0; while (x !== 0) { let pop = x % 10; x = parseInt(x / 10);
if ( rev > parseInt((Math.pow(2, 31) - 1) / 10) || (rev === parseInt((Math.pow(2, 31) - 1) / 10) && pop > 7) ) { return 0; }
if ( rev < parseInt(Math.pow(-2, 31) / 10) || (rev === parseInt(Math.pow(-2, 31) / 10) && pop < -8) ) { return 0; }
rev = rev * 10 + pop; }
return rev; };
|
解法二
var reverse = function (x) { var isNegative = x < 0 ? true : false; var target = (isNegative ? -x : x).toString().split("").reverse().join(""); target = isNegative ? -target : +target; var outRange = target < Math.pow(-2, 31) || target > Math.pow(2, 31) - 1;
return outRange ? 0 : target; };
|
本文代表个人观点,内容仅供参考。若有不恰当之处,望不吝赐教!