给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
- -231 <= x <= 231 - 1
解答一
将 x 转成字符串,再反转字符串
ini
function reverse(x: number): number {
const s = (x + '').split('')
let low = s[0] === '-' ? 1 : 0
let high = s.length - 1
while(low < high) {
const temp = s[low]
s[low] = s[high]
s[high] = temp
low ++
high --
}
const num = Number(s.join(''))
if (num > Math.pow(2,31) || num < Math.pow(-2,31)-1) {
return 0
}
return num
};
解答二
关键公式 result = result * 10 + x % 10,x = x / 10
sql
function reverse(x: number): number {
let result = 0
while(x !== 0) {
result = result * 10 + x % 10
x = x > 0 ? Math.floor(x / 10) : Math.ceil(x / 10)
}
if (result > Math.pow(2,31) || result < Math.pow(-2,31)-1) {
return 0
}
return result
};