不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

LeetCode-7-reverse-integer | 整数反转

题目

题解

通过题目可以看出来,这道题是让我们翻转一个整数,比如123,个位是1十位是2百位是3,反转后个位是3十位是2百位是1。

需要解决两个问题

  • 1,排除为0的情况
  • 2,反转数字

解法一:Golang

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func reverse(x int) int {
if x < 0 {
//考虑x为负数的情况
return -reverse(-x)
}
var re int
for x != 0 {
re = re*10 + x%10
x = x/10
}

if re < 0x7fffffff {
return re
}
return 0
}

解法二:弹出和推入数字 & 溢出前进行检查

照着官方题解的解法一:弹出和推入数字 & 溢出前进行检查写的Go版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func reverse(x int) int {
rev := 0
INT_MIN:=-2147483648
INT_MAX:=2147483647
for x != 0 {
pop := x % 10
x /= 10
if rev > INT_MAX / 10 || rev == INT_MAX / 10 && pop >7 {
return 0
}
if rev < INT_MIN / 10 || rev == INT_MIN / 10 && pop < -8 {
return 0
}
rev = rev * 10 + pop
}

return rev
}
------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!