给定一个范围为 32 位 int 的整数,将其颠倒。
例 1: 输入: 123 输出: 321
例 2: 输入: -123 输出: -321
例 3: 输入: 120 输出: 21
注意:
假设我们的环境只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。
第二版
这道题本来原理就比较简单。 num = (num*10 + x%10)
就是整个思路的关键
func reverse(x int) int {
num := 0
for x != 0 {
//核心代码
num = (num*10 + x%10)
x = x / 10
if num < math.MinInt32 || num > math.MaxInt32 {
return 0
}
}
return num
}
第一版
package main
import (
"fmt"
"math"
)
func main() {
sum := reverse(-100)
fmt.Println(sum)
}
func reverse(x int) int {
num := 0
arr := make(map[int]int)
bin := false
if x < 0 {
bin = true
x = 0 - x
}
i := 0
for ; x/10 > 0; x = x / 10 {
arr[i] = x % 10
i++
}
if x/10 == 0 {
arr[i] = x
}
c := false
for i := 0; i < len(arr); i++ {
if arr[i] > 0 || c {
num = num + arr[i]
c = true
num = num * 10
}
}
if bin {
num = 0 - num
}
num = num / 10
if num < math.MinInt32 || num > math.MaxInt32 {
return 0
}
return num
}