7. 整数反转

image.png

栈理论

  1. package main
  2. import (
  3. "fmt"
  4. "math"
  5. )
  6. func reverse(x int) int {
  7. var stack []int
  8. for x!=0{
  9. r :=x%10
  10. stack = append(stack,r)
  11. x =x/10
  12. }
  13. var r int
  14. index :=0
  15. for len(stack)>0{
  16. top :=stack[len(stack)-1]
  17. stack = stack[:len(stack)-1]
  18. r = int(math.Pow10(index))*top+r
  19. index++
  20. }
  21. // 边界
  22. if !( -(1<<31) <= r && r <= (1<<31)-1) {
  23. return 0
  24. }
  25. return r
  26. }
  27. func main() {
  28. fmt.Println(reverse(-1234))
  29. fmt.Println(reverse(120))
  30. fmt.Println(reverse(1534236469))
  31. }

image.png

原地反转

func reverse(x int) int {

    var y =0
    for x!=0{
        y =y*10+x%10
        if !( -(1<<31) <= y && y <= (1<<31)-1) {
            return 0
        }
        x =x/10
    }
    return y
}
func main() {
    fmt.Println(reverse(-1234))
    fmt.Println(reverse(120))
    fmt.Println(reverse(1534236469))
}

image.png