题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
解法
(方法摘自:力扣(LeetCode)
作者:数据结构和算法
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnx13t/?discussion=ukHfZx)
本题的难点在于对于超出整数存储范围的数的处理,然后判断是一个问题。作者这里使用long类型来做数据存储,然后通过强转int来判断数据是否超出存储范围。
public int reverse(int x) {
long res = 0;
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
}
return (int) res == res ? (int) res : 0;
}