leetcode
leetcode第7题如何计算给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1
input 123
output 321
示例2
input -120
output -21
解法:
这道题的解法主要包括两步,第一步,从原整数中弹出
pop = x % 10
x /= 10
ans = ans * 10 + pop
然后最后一步判断是否有溢出?
溢出的有两种情况,一种是大于最大值,另一种是小于最小值,最大值的个位是7,最小值的个位是-8
func reverse(x int) int {
max := 1
min := 1
for i := 0; i < 31; i++ {
max *= 2
min *= 2
}
max = max - 1
min = -min
ans := 0
for x != 0 {
pop := x % 10
x /= 10
if (ans > max/10) || (ans == max/10 && pop > 7) {
return 0
}
if (ans < min/10) || (ans == min/10 && pop < (-8)) {
return 0
}
ans = ans*10 + pop
}
return ans
}