Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123 Output: 321
Example 2:
Input: -123 Output: -321
Example 3:
Input: 120 Output: 21
通过这道题恶补了计算机知识:int范围、原码,反码,补码
32位int范围:0x80000000-0x7fffffff
计算方法:min=2^32/2转16进制,max=min减1
特别要注意对于溢出值的处理。
class Solution {
public:
int reverse(int x) {
long ans=0;
int max=0x7fffffff;
int min=0x80000000;
while(x!=0)
{
ans=ans*10+x%10;
x/=10;
}
if(ans>max||ans<min)
{
ans=0;
}
return ans;
}
};