leetcode:整数反转

题目

作者:gpe3DBjDS1
链接:https://leetcode-cn.com/problems/reverse-integer/
来源:力扣(LeetCode)

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:
输入: 123
输出: 321

示例 2:
输入: -123
输出: -321

示例 3:
输入: 120
输出: 21

注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0

解法

  • 方法1
func reverse(x int) int {
    tmp := make([]int, 0)
    var result, a int
    var flag bool

    if x < 0 {
        x = int(math.Abs(float64(x)))
        flag = true
    }

    for x > 0 {
        a = x / 10
        value := x % 10

        if value > 0 {
            tmp = append(tmp, value)
        } else {
            if len(tmp) != 0 {
                tmp = append(tmp, value)
            }
        }

        x = a
    }

    length := len(tmp)

    for index, value := range tmp {
        powValue := math.Pow10(length - index - 1)
        i := int(powValue)

        result = result + value*int(i)
    }

    max := int(math.Pow(2, 31))

    if result > max {
        result = 0
    }

    if flag {
        result = result * (-1)
    }

    return result
}

效率低,实现复杂

  • 方法2
func reverse1(x int) int {
    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
}

效率高,代码简洁

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 示例 2: 示例 3: 注意...
    8239e604d437阅读 321评论 0 0
  • 前言 本系列,希望使用Python通关LeetCode,暂时开始做简单题。初次刷LeetCode目的是为了提高自己...
    3inchtime阅读 1,666评论 1 1
  • 1.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要...
    neo_ming阅读 705评论 0 0
  • 【知~学习】 《六项精进》大纲背诵0遍共26遍 《大学》背诵0遍共26遍 《六项精进》阅读 学习商务英语 复看六项...
    张伟_d3c6阅读 76评论 0 0
  • 参加过许多培训,大部分是小范围、系统内的,常常培训时枯坐几天,回来后憋半夜憋出几百字感受交差。不说也罢。最好的一次...
    xhy0606阅读 398评论 0 2

友情链接更多精彩内容