题目描述:给你一个 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
位运算
result * 10 + x % 10 取出末位 x % 10(负数结果还是负数,无需关心正负),拼接到 result 中。
x / 10 去除末位,| 0 强制转换为32位有符号整数。
- 通过 | 0 取整,无论正负,只移除小数点部分(正数向下取整,负数向上取整)。
1 | var reverse = function(x) { |
复杂度分析
- 时间复杂度:O(log |x|)。翻转的次数即 x 十进制的位数。
- 空间复杂度:O(1)