package main import ( "math" ) func reverseOld(x int) int { stack := make([]int, 0) neg := false if x < 0 { neg = true x = -x } for remain := x % 10; x > 0; remain = x % 10 { stack = append(stack, remain) x /= 10 } res := 0 for i, v := range stack { res += v * int(math.Pow10(len(stack)-i-1)) } if res > 1<<31-1 || res < -1<<31 { return 0 } if neg { return -res } return res } func reverse(x int) int { res := int64(0) for ; x != 0; x /= 10 { res = res*10 + int64(x%10) // overflow: -2^31 ~ 2^31-1 // if res > 1 << 31 - 1 || res < -1 << 31 { return 0 } if res < math.MinInt32 || res > math.MaxInt32 { return 0 } } return int(res) } // func main() { // fmt.Println(reverse(1234)) // }