美文网首页LeetCode题库-Swift解题
7.整数翻转(Swift版)

7.整数翻转(Swift版)

作者: Mage | 来源:发表于2018-12-11 15:45 被阅读5次

一、题目

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

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

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

二、解题

使用推出数字和溢出前进行检查的方法。
推出数字pop = num % 10; num /= 10
累加总数rev = rev * 10 + pop
为了防止溢出,累加前进行溢出检查。
时间复杂度:O(n),空间复杂度:O(1)

三、代码实现

    class Solution {
        func reverse(_ x: Int) -> Int {
            var num = x
            
            var rev = 0;
            while num != 0 {
                // 弹出最后一个数
                let pop = num % 10
                num /= 10
                // 正数溢出检查
                if rev > 214748364 || (rev == 214748364 && pop > 7) {
                    return 0
                }
                // 负数溢出检查
                if rev < -214748364 || (rev == -214748364 && pop < -8) {
                    return 0
                }
                // 累加
                rev = rev * 10 + pop
            }
            return rev
        }
    }

Demo地址:github

相关文章

  • 7.整数翻转(Swift版)

    一、题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1: 示例 2: 示例 3...

  • 整数翻转

    代码如下:

  • 用栈翻转

    用栈翻转 「栈翻转」是一个非常重要的性质, 有 字符串的翻转 整数的翻转 把栈转换成队列 0X00 栈翻转 整数的...

  • 7_reverse_integer 整数反转

    题目描述 7. 整数反转 思路 没啥难度,就是翻转数字问题需要注意溢出问题,我没考虑到。看答案处理溢出问题挺巧妙的...

  • leetcode 7. 整数反转(Java版)

    题目描述(题目难度,简单) 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: ...

  • 翻转整数(2)

    翻转整数 要求 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 输入: 123 输出: ...

  • LeetCode:整数翻转

    About 挑战LeetCode第4天,今天的难度都算不上挑战了,一道非常easy的题,本来,这种简单的题目我们应...

  • 07整数翻转

    2019年04月16日 Day02 级别:简单 LeetCode 07 题目: 整数反转 给出一个 32 位...

  • LeetCode算法题-7. 整数反转(Swift)

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/revers...

  • 7.反转整数

    给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 示例 2: 示例 3: 注意:假设我们的环境只...

网友评论

    本文标题:7.整数翻转(Swift版)

    本文链接:https://www.haomeiwen.com/subject/rbndqqtx.html