美文网首页leetcode刷题
LeetCode 6. 整数反转

LeetCode 6. 整数反转

作者: 笙绳省盛 | 来源:发表于2019-01-23 13:47 被阅读0次

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

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

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

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

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

我的解法:将整形转换成字符串,判断首位是否是“-”,再将字符串反转,注意判断是否在在整形范围以内。
        let str = "\(x)"
        let array = Array(str)
        let firstStr = array[0]
        if firstStr == "-"{
            let intStr = str[str.index(str.startIndex, offsetBy: 1)...]
            if -Int(String(intStr.reversed()))! < Int32.min{
                return 0
            }else{
                return -Int(String(intStr.reversed()))!
            }
        }else{
            if Int(String(str.reversed()))! > Int32.max{
                return 0
            }else{
                return Int(String(str.reversed()))!
            }
        }
查看他人的解法:初始化一个result为0,将原来的值%10之后算出每一位值,加上result * 10就可以实现反转。
    func reverse(_ x: Int) -> Int {
        guard x >= Int32.min && x <= Int32.max else {
            return 0
        }
        var target = x
        let negative = target < 0
        if negative{
            target *= -1
        }
        var result = 0
        while target > 0{
            result = result &* 10 &+ target % 10 //值溢出运算符是为了防止32位环境下溢出
            target /= 10
        }
        guard result > 0 else{
            return 0
        }
        if negative{
            result *= -1
        }
        return result >= Int32.min && result <= Int32.max ? result : 0
    }
学到的知识:溢出运算符可以防止溢出
  • &+ 溢出加法
  • &- 溢出减法
  • &* 溢出乘法
  • &/ 溢出除法
  • &% 溢出求余

相关文章

  • LeetCode 6. 整数反转

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

  • Leetcode-7-(整数反转)

    Leetcode-7-(整数反转)[https://leetcode-cn.com/problems/revers...

  • leetcode 整数反转

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

  • LeetCode:整数反转

    LeetCode第7号问题:整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行...

  • 【leetCode】整数反转

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

  • leetcode:整数反转

    题目 作者:gpe3DBjDS1链接:https://leetcode-cn.com/problems/rever...

  • leetcode 整数反转

    给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整...

  • LeetCode 每日一题 [7] 整数反转

    LeetCode 整数反转 [简单] 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 来...

  • 第五周ARTS

    Algorithmic LeetCode整数反转需要考虑多种情况,负数反转、数据溢出等等 https://leet...

  • 一起学算法-7.整数反转

    一、题目 LeetCode-7.整数反转链接:https://leetcode-cn.com/problems/r...

网友评论

    本文标题:LeetCode 6. 整数反转

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