力扣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
}