在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; } };