思路:
各位挨个取余,注意边界值,INT_MAX= 2147483647,INT_MIN=-2147483648
判断 1.如果当前翻转s>INT_MAX/10||s==INT_MAX/10&&当前取余大于7 必然溢出
2.如果当前s<INT_MIN/10||(s==INT_MIN/10&&当前取余<-8) 必然溢出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class Solution { public: int reverse(int x) { int pop; int s=0; while(x!=0) { pop=x%10; x=x/10; if(s>INT_MAX/10||(s==INT_MAX/10&&pop>7)) return 0; if(s<INT_MIN/10||(s==INT_MIN/10&&pop<-8)) return 0; s=s*10+pop; } return s; } };
|