题目
思路
反转不难,不停对10取余再除10就行,本题的难点在于反转后超过32位整数的范围如何处理。
在C++中如果一个int类型的数超过32位就要用long或long long来保存,如果int超过32位,在对它进行强制类型转换的时候,该数就不会是原来的数值,利用这点进行判断,如果将long类型强制类型转换后不等于原来的int数,说明转换后超出范围,直接返回0
代码
class Solution {
public:
int reverse(int x) {
long n=0;
while(x!=0){
int t = x%10;
x=x/10;
n=10*n+t;
}
return (int)n==n?(int)n:0;
}
};