Reverse digits of an integer.Example1: x = 123, return 321
Example2: x = -123, return -321java
時間 O(n) 空間 O(n)git
先將數字轉化爲字符串,而後將字符串倒序輸出,並轉回數字。記得須要去除首部多餘的0。優化
時間 O(n) 空間 O(1)code
經過對數字模十取餘獲得它的最低位。其實本題考查的是整數相加的溢出處理,檢查溢出有這麼幾種辦法:rem
public class Solution { public int reverse(int x) { long result = 0; int tmp = Math.abs(x); while(tmp>0){ result *= 10; result += tmp % 10; if(result > Integer.MAX_VALUE){ return 0; } tmp /= 10; } return (int)(x>=0?result:-result); } }
2018/10字符串
func reverse(x int) int { // The reserse of MinInt32 will overflow if x == math.MinInt32 { return 0 } sign := 1 // Handle negative numbers if x < 0 { x = -x sign = -1 } result := 0 for x > 0 { rem := x % 10 // When the result == MaxInt32/10, the reminder has to be smaller than 7 // so that result*10 + rem won't overflow (MaxInt32 is 2147483647) if math.MaxInt32/10 < result || (math.MaxInt32/10 == result && rem > 7) { return 0 } result = result*10 + rem x = x / 10 } return result * sign }
Q:拿到反轉整數題目後第一步是什麼?
A:先問出題者尾部有0的數字反轉後應該是什麼形式,其次問清楚溢出時應該返回什麼。編譯器
Q:除了檢查溢出返回特定值之外,有沒有別的方法處理溢出?
A:能夠使用try-catch代碼塊排除異常。it