在leetcode上就見了這題:

經典的反轉整數,遇見過很多次了,本以為很簡單,分分鍾碼出來,結果卻大失所望,哎,看來以后還是得多想想特殊情況呀~~
不多說,先把坑挖出來,一共兩個坑:
1.反轉后可能溢出,此時應該返回0;
2.關於尾數為0時,應舍去;
由於采用數學方法獲取各位數,並非用文本反轉,所以坑2就不用考慮了,
關鍵是坑1,如何判別溢出呢?可以通過獲取INT_MAX和INT_MIN來輔助,由於是乘法溢出,故采用將最值除上相應值,這樣避免判斷最值情況。
一切盡在代碼中:
class Solution {
public:
int reverse(int x) {
int t = 0;
while (x != 0)
{
if (t >INT_MAX / 10 || t <(INT_MIN) / 10)
return 0;
t= t * 10 + x % 10;
x /= 10;
}
return t;
}
};
