leetcode

Example:

Input: 120
Output: 21

Solution:


import (
    "math"
)

func reverse(x int) int {
    sign := 1

    // 若遇到负数,先暂时转正
    if x < 0 {
        sign = -1
        x = -1 * x
    }

    // 预设反转后的数rvs为0
    rvs := 0

    // 直到将x的所有数字全部去掉之前
    for x > 0 {
        // 通过取余逐个获取x的末尾数res
        res := x % 10
        // 将res放到rvs的首位
        rvs = rvs*10 + res
        // 每次完成后去掉x末尾数(go的整数除法所得商向下取整,整数与点数相除所得商转为点数)
        x = x / 10
    }

    // 还原x的符号到rvs
    rvs = sign * rvs

    // 处理rvs的溢出
    if rvs > math.MaxInt32 || rvs < math.MinInt32 {
        rvs = 0
    }

    return rvs
}