题目描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [$-2^{31}, 2^{31}$] 就返回 0
假设环境不允许存储 64 位整数(有符号或无符号)。
输入输出
1 | 输入:x = 123 |
基本思路
按照正常的思路 只需要逐位进行除法 取余 再乘以10
相加即可 如同以下:
1 | class Solution { |
但是由于题目中要求:如果反转后整数超过 32 位的有符号整数的范围 [$-2^{31}, 2^{31}$] 就返回 0
如果测试用例为(可以自己写)1147483649
反转之后9463847411
就已经超过 $2^{31} = 2147483648$
所以需要在res
阶段就判断是否大于2147483648
- 如果
res
大于214748364 加tmp
后边肯定更大 - 如果
res
等于214748364 必须判断tmp
是否大于7 - 负数的话同理 判断
java实现
1 | class Solution { |