/*
* [7] 整数反转
*/
// @lc code=start
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
// 1. 方案一
// let cur = x;
// let collect = []
// let result = 0;
// while (cur % 10 !== cur) {
// const num = cur % 10
// collect.push(num)
// cur = (cur - num) / 10
// }
// collect.push(cur)
// let len = collect.length;
// for (let i = 0; i < len; i++) {
// result += collect[i] * 10 ** (len - 1 - i)
// }
// if (result > 2 ** 31 - 1 || result < -(2 ** 31)) return 0
// return result
// 2. 更简洁的
let ans = 0;
while (x !== 0) {
if (ans > (2 ** 31 - 1) || ans < -(2 ** 31)) return 0
const num = x % 10
ans = ans * 10 + num
x = x > 0 ? Math.floor(x / 10) : Math.ceil(x / 10)
}
if (ans > (2 ** 31 - 1) || ans < -(2 ** 31)) return 0
return ans
};
console.log(reverse(-123))
console.log(reverse(12345))
console.log(reverse(1534236469))
console.log(reverse(-2147483648))