<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>力扣刷题-02-简-整数翻转</title>
</head>
<body>
<p>
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转
</p>
<p>
输入: 123
输出: 321
<br />
输入: -123
输出: -321
<br />
输入: 120
输出: 21
</p>
<p>
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
</p>
</body>
<script>
/**
* Math.abs( x ) 取绝对值
* Math.pow(x,y) 返回 x 的 y 次幂。
* w3c Math 方法详解 https://www.w3school.com.cn/js/jsref_obj_math.asp
*/
// let num1=Math.pow(-2,31)=-2147483648
// let num2=Math.pow(2,31)=2147483648
/**
* 整数反转:第一种解法
* 字符串直接判断
*/
let data = -21474836480
let reverse = function(data) {
let str = Math.abs(data).toString().split('').reverse().join('')
// 不存在负数的情况可以直接返回了,但是存在负数,其实范围判断
// 不需要用Math.pow(-2,31) 去进行判断,因为str 是取的绝对值
if (data < 0) {
return str < Math.pow(2, 31) ? -str : 0
} else {
return str < Math.pow(2, 31) ? str : 0
}
}
console.log('第一种解法:' + reverse(data))
</script>
</html>