123 -> 321
-1234 -> -4321
思路:
记录符号
正负数一样对待
记录后面的数字,计入结果, 乘以10,继续累加后面的数字 rolling
因为乘以10所以会越界,注意越界的判断!
时间复杂度:
O(位数)
Code (C++):
class Solution {
public:
int reverse(int x) {
int sign = x>0?1:-1;
x = abs(x);
int res = 0;
while(x>0)
{
if(INT_MAX/10 < res || (res == INT_MAX/10 && INT_MAX%10 < x%10)) return 0;
res = res*10+x%10;
x = x/10;
}
return res*sign;
}
};