【LeetCode】Reverse Integer Go语言实现

问题描述

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

题意很明确,将一个整数反转输出。

思路

首先不用考虑用库函数先转为字符串再反转的方式,这根本不是算法。
整体解决思路为,依次取出整数的每一位数,然后反转,再组装成整数即可。有几个点需要考虑:

  • 取末位数。 num % 10 即可。
  • 去掉末位数。 num / 10 即可。
  • 组装整数。定义 sum := 0, 循环数字序列,每次 sum = sum * 10 + 数字即可
  • 溢出问题。问题规定了整数为32位,因此最大值为0x7FFFFFFF, 最小值为-0x80000000

Go实现

用时6ms, 击败20%用Golang的人。

var MIN int = 0x80000000
var MAX int = 0x7FFFFFFF

func reverse(x int) int {
    sum := 0
    for {
        leftDigits := x / 10
        lastDigit := x % 10
        x = leftDigits

        sum = sum * 10 + lastDigit

        if 0 == leftDigits {
            break
        }
    }

    if sum < -MIN || sum > MAX {
        fmt.Println(sum)
        sum = 0
    }

    return sum
}
posted @ 2016-11-23 11:32  司青  阅读(7)  评论(0)    收藏  举报  来源