来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2的31次方, 2的31次方 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
位数反转。有符号
< pow(-2, 31) || > pow(2, 31) - 1 的时候结果是0。
方法1:取余来获取最后一位
func reverse(_ x: Int) -> Int {
var result = 0
var currentX = abs(x)
var currentIndex:Double = 0
while currentX >= 1 {
//取余数来获取最后一位
result = 10 * result + (currentX % 10)
currentX = currentX / 10
currentIndex += 1
}
result = (x > 0) ? result : -result
if Double(result) < pow(-2, 31) || Double(result) > pow(2, 31) - 1 {
result = 0
}
return result
}