美文网首页
7. Reverse Integer_Swift

7. Reverse Integer_Swift

作者: iOS_肖晨 | 来源:发表于2018-01-31 16:37 被阅读12次

    难度

    简单

    题目

    给定一个32位的整数,返回一个翻转的整数
    Example 如下:

    Input: 123
    Output:  321
    --------------
    Input: -123
    Output: -321
    ---------------
    Input: 120
    Output: 21
    

    思路

    思路一

    对给定的 number 取 10 的余数并将值赋给 result,每次取余都需要将 result 的值乘以 10 并将 number 除以 10,直到number值为 0。注意负数需要在最终结果乘 -1。时间复杂度为:O(lgn)。
    注意边界值的判断。

    思路二

    将数字取绝对值后转化为字符串,并调用字符串的reversed()方法,之后再转为整数,并进行边界值判断。

    代码

    方法一

    func reverse(_ x: Int) -> Int {
        
        var isBelowZero = 1
        var result = 0
        var number = x
        
        if x < 0 {
            isBelowZero = -1
            number = -x
        }
        
        while number > 0 {
            if result > (Int(Int32.max) - number % 10) / 10 && isBelowZero == 1 ||
                -result < (Int(Int32.min) + number % 10) / 10 && isBelowZero == -1 {
                return 0
            }
            result = result * 10 + number % 10
            number = number / 10
        }
        
        return result * isBelowZero
    }
    

    方法二

    func reverse(_ x: Int) -> Int {
        
        let s = String(String(abs(x)).reversed())
        
        var v = Int(s) ?? 0
        v = x < 0 ? 0 - v : v
        
        if v > Int32.max || v < Int32.min {
            return 0
        } else {
            return v
        }
    }
    

    相关文章

      网友评论

          本文标题:7. Reverse Integer_Swift

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