給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1
:輸入:
123輸出:
321示例 2
:輸入:
-123
輸出:-
321示例 3
:輸入:
120輸出:
21注意:
假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231
,231 − 1
]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
普遍的思路,新建乙個陣列反過來存,簡單除暴,但是效率和記憶體消耗大class
solution
char
str = integer.
tostring
(x).
tochararray()
;char
newstr;
if(x <0)
}else
}else}}
long y = long.
parselong
(string.
valueof
(newstr));
if( y<
-2147483648
|| y>
2147483647
)return integer.
parseint
(long.
tostring
(y));}
}
結果
結果可以看出,雖然解決了問題但是效率並不客觀。
經過研究和思考,下面的方法更好,我們要考慮一下怎麼取最後乙個數字
例如:12345 怎麼取5 ==> 1234怎麼取4 ==> 123 怎麼取3
由圖可見:我們取模就可以了,可以看出**簡潔了很多。
class
solution
res = res*
10+ tmp;
x /=10
;}return res;
}}
具體的執行邏輯:
x=12345
第一次:tmp =
5 res =
5 x =
1234
第二次:tmp =
4 res =
54 x =
123第三次:tmp =
3 res =
543 x =
12第四次:tmp =
2 res =
5432 x =
1第五次:tmp =
1 res =
54321 x =
0
執行結果
結果的確讓人很滿意
letcode 第二題 數字反轉
整數反轉 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。class solution def reverse self,x int int if 10 x 10 return x str x str x if str x 0 str x str x 1 x int str ...
lintcode反轉整數
反轉整數 將乙個整數中的數字進行顛倒,當顛倒後的整數溢位時,返回 0 標記為 32 位整數 您在真實的面試中是否遇到過這個題?yes 樣例給定x 123,返回321 給定x 123,返回 321 標籤 相關題目 本題採用數學計算法而不是文字翻轉,所以末尾為0的翻轉不用考慮。坑就是要考慮溢位啊!一開始...
7 整數反轉
鏈結 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後...