给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例1:
输入:x = 123 输出:321
示例2:
输入:x = -123 输出:-321
示例3:
输入:x = 0 输出:0
提示:
- -231 <= x <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
Array.reverse + Array.join
不推荐
function reverse(x: number): number {let s = x.toString();const flag = s.indexOf('-') === 0;if (flag) {s = s.substr(1, s.length - 1);}s = s.split('').reverse().join('');if(flag) {s = '-' + s;}const num = Number(s);return Math.pow(-2, 31) <= num && Math.pow(2, 31) - 1 >= num ? num : 0;};
数学推导
// 弹出 x 的末尾数字 digitdigit = x % 10x /= 10// 将数字 digit 推入 rev 末尾rev = rev * 10 + digit
时间复杂度:O(log|x|)
空间复杂度:O(1)
function reverse(x: number): number {let rev = 0;while (x !== 0) {const digit = x % 10;x = ~~(x / 10);rev = rev * 10 + digit;if (rev < Math.pow(-2, 31) || rev > Math.pow(2, 31) - 1) {return 0;}}return rev;};
