1,题目要求
Given a 32-bit signed integer, reverse digits of an integer.
给定一个32位有符号整数,对其进行反转。
2,题目思路
一开始,想的还是利用字符串的特性来进行逆转,只需要再进行边界判断即可。
在参考之后,有一种很好的方法:
即依次取最后一位,逐渐的去构造逆转之后的数字,每次都对是否overflow进行判断——如果已经溢出了,则这个数字是无法复原到原先的结果的。
3,程序源码
class Solution {
public:
int reverse(int x) {
int result = 0;
while(x!=0)
{
int last = x % 10;//取最后一位
int temResult = result * 10 + last;
if((temResult - last) / 10 != result)//无法复原:说明overflow
return 0;
result = temResult;
x /=10;
}
return result;
}
};