這個是逆轉32位的int值,看了例子就應該很清楚要幹什麼了
首先是正負數,這個比較好實現的,用正數進行計算,如果是負數,最後加上負號就好了
其次就是溢出的判斷,在溢出裏首先是知道最大的int的值是0x7fffffff,然後轉換的過程中,先取判斷這個轉換可不可以做,也就是判斷是否會溢出,然後再進行後面的操作
之前看別的博客裏有人問爲什麼ans*10+x%10>max_int不可以,我覺得是因爲前面的已經溢出了,再判斷結果就會是錯的,代碼也很短
class Solution {
public:
int reverse(int x) {
int y = 0;
if(x<0)
y = -x;
else y = x;
int max_int = 0x7fffffff;
int ans = 0;
while(y>0)
{
if(ans>((max_int-y%10)/10))
return 0;
else
{
ans = ans*10+y%10;
y = y/10;
}
}
return x>0?ans:-ans;
}
};