题目描述
给你一个 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 { |