leetCode07:整數逆序輸出

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

提交之後,測試通過!

發佈了47 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章