力扣7 - 整数反转

2020-09-01  本文已影响0人  gaookey

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

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

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

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

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

func reverse(_ x: Int) -> Int {
    
    guard x != 0 else {
        return x
    }
    
    let isNegative = (x > 0) ? 1 : -1
    
    var result = 0
    var number = abs(x)
    
    while number != 0 {
        let a = number % 10
        number = number / 10
        result = result * 10 + a
    }
    
    result = result * isNegative
    
    if result > Int32.max || result < Int32.min {
        return 0
    }
    
    return result
}
func reverse2(_ x: Int) -> Int {
    
    guard x != 0 else {
        return x
    }
    
    var xs = [String]()
    for c in String(abs(x)) {
        xs.insert(String(c), at: 0)
    }
    
    for _ in xs {
        if xs.first == "0" {
            xs.removeFirst()
        }
    }
    
    if x < 0 {
        xs.insert("-", at: 0)
    }
    
    let result = Int(xs.joined())!
    
    if result > Int32.max || result < Int32.min {
        return 0
    }
    
    return result
}
上一篇 下一篇

猜你喜欢

热点阅读