7. 整数反转

127 阅读1分钟

题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/re… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:

// import "math"
func reverse(x int) int {
    ans := int32(0)
    for x != 0 {
        // if ans * 10 < math.MinInt32 ||  math.MaxInt32 < ans * 10 {
        //     return 0
        // }
        digit := x % 10
        
        x = x / 10
       
        last := ans
        ans = ans * 10 + int32(digit)
        // 溢出之后 2147483647 + 1变成 -2147483648,不满足下面的条件
        if last != ans / 10 {
            return 0
        }
    }

    return int(ans)
}