關於反轉整數


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM