Reverse digits of an integer.
反转整数数字。
Example1: x = 123, return 321
Example2: x = -123, return -321
需要注意的问题:整数的最低位是0,如10100.以及反转的数字可能溢出。
解:
反转一个数字就是循环的除以10,得到的余数是最低位,是我们返回的结果的最高位。这种解法对于10100这种情况依旧使用,为了防止溢出则需要一个判断语句。代码如下(C++):
class Solution { public: int reverse(int x) { int result = 0; while (x != 0){ if (INT_MAX / 10 < result||INT_MIN/10>result){ result = 0; break; } else{ result = result * 10 + x % 10; } x /= 10; } return result; } };
显然时间复杂度为O(n),空间复杂度为O(1).