Related Topics
[Math]
Similar Questions
[String to Integer (atoi)]
题目:Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer).
Example
Given x = 123, return 321
Given x = -123, return -321
思路:通过不断求余得到最后一位数字,并迭代成权数10,使其位数增高。本题主要是要考虑溢出的问题。解决溢出问题有以下办法:
- 使用long类型的对象存储翻转后的结果,直接判断是否超出范围;
- 仍使用int类型存储,在乘10之前进行判断;
- 当将溢出数据赋给int对象时,高位会丢失,因此如果超出了范围,其除以10的结果就不会跟之前的结果一致,根据此判断。
java解法2
class Solution {
public int reverse(int x) {
int res = 0;
while (x != 0) {
if (Math.abs(res) > Integer.MAX_VALUE/ 10) return 0;
res = res * 10 + x % 10;
x /= 10;
}
return res;
}
}
java解法3
class Solution {
public int reverse(int x) {
int res=0,t;
while(x!=0) {
t=res*10+x%10;
if(t/10!=res) return 0;
res=t;
x=x/10;
}
return res;
}
}
网友评论