原题地址:https://leetcode.com/problems/reverse-integer/
题目要求是:反转一个整数,例如:
x = 123,返回321
x = -123, 返回-321
题目比较简单,需要注意的一点是要判断是否溢出,因此需要用long类型保存结果。
public class Solution {
public int reverse(int x) {
long result = 0L;
while (x != 0) {
result = result * 10 + x % 10;
x /= 10;
}
if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
return 0;
}
return (int)result;
}
}
多问一句:如果要反转一个long型的整数,如何判断溢出?可以用Java类库封装好的BigDecimal类来保存结果,其内部是通过有效数字(smallValue)和幂次(scale)来保存数字的,因此能精确表示非常大的数。具体用法可以参考下面这个链接:
http://blog.csdn.net/jackiehff/article/details/8582449
另外,不同语言对负数取模的结果可能不同,用Java的话不需要特殊处理,但是其他语言(如Python)可能需要处理一下,具体参见下面这个链接:
http://www.cnblogs.com/ppboy_dxh/archive/2011/02/18/1958175.html