leetCode:Reverse Integer
題目: Given a 32-bit signed integer, reverse digits of an integer.
注意:Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
首先我是使用c語言做這道算法題的。
題目爲整數的反轉。其實如果說不考慮溢出的情況還是很好解決的;可以通過分解整數的方式將其反轉
while (x!=0){
result = result*10+x%10;
x = x/10;
}
關於溢出問題我想了很久,但是都不能解決。首先,兩個int型的相加依然爲int型。而且,在一開始傳入值時,leetcode上使用的是int傳值,而造成如果我傳入的值是就是越界值,則會造成溢出問題而改變值的大小,從而是問題變得更加複雜。之後在看了關於c語言的溢出問題介紹之後就有了另一種更加方便的思路。我們可以將上面代碼出現的result
定義爲long
型。而long
不會造成越界問題。所以可以用其和int類型 的最大值和最小值去做比較。
while (x!=0){
result = result*10+x%10;
x = x/10;
if(result>INT_MAX ||result<INT_MIN){
return 0;
}
}